0

あるクラスから MainActivity に何かを渡そうとしていますが、うまくいかないようです。理由がわかりません。GPS トラッカーを再利用するために、別のクラス (MainActivity ではない) に持っています。場所が変わったら、別のクラスで MainActivity 内からメソッドを呼び出して UI を更新する必要があります。

私は自分のコードを次のように要約しました:

 My MAIN ACTIVITY :

public class MainActivity extends Activity implements OnClickListener {

TextView tv;
EditText et;
Button btun;
int arg0;
int stuff;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tv = (TextView) findViewById(R.id.tv);
    et = (EditText) findViewById(R.id.et);
    btun = (Button) findViewById(R.id.btun);
    btun.setOnClickListener(this);
}

private void setter(int stuff) {
    tv.setText(stuff);
}

public void setText(int _stuff) {
    _stuff = stuff;
    setter(_stuff);
}

@Override
public void onClick(View v) {
    Getter get = new Getter();
    get.getInfo(Integer.parseInt(et.getText().toString()));
}

他のクラス:

public class Getter {

int _getString;
MainActivity main = new MainActivity();

public void getInfo(int getString) {
    _getString = getString * 8;
    main.setText(_getString);
    }
}

LogCat at に NullPointerException が発生します。

- tv.setText(stuff);
- setter(_stuff);
- main.setText(_getString);
- get.getInfo(Integer.parseInt(et.getText().toString()));

その理由、そして何よりも、それを修正する方法がよくわかりません。

どんな助けにも感謝します!

(PS : 私の GPS トラッカーは問題なく動作しています。それはちょうど私の setter() メソッドを呼び出しているところです。

4

4 に答える 4

0

アプリケーションクラスを使用するか、別のクラスを作成して、その中で静的変数を宣言します。値を取得するには、getterメソッドとsetterメソッドを使用します。他のクラスからmainacivityのTextviewを更新するには、mainアクティビティからtexview参照変数を渡し、textviewがnullでない場合は、他のクラスにnullチェック条件を設定してから値を更新します。

于 2013-02-23T14:11:38.867 に答える
0

MainActivity の onCreate() メソッドが呼び出されていないことが原因である可能性があります。したがって、テレビはまだnullであり、NullPointerExceptionが発生します

于 2013-02-23T13:38:30.813 に答える
0

のオブジェクトをインスタンス化してもメソッドMainActivityは自動的に呼び出されませんonCreateが、このメソッドは、を使用してアクティビティを開始すると呼び出されますIntent。同じインテントを使用して、追加の値を渡すことができます。例えば:

Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("key", value);
context.startActivity(intent);

次に、メインのアクティビティonCreateメソッドで:

String value = getIntent.getStringExtra("key");

編集:あなたの場合、値void getInfo(int getString)を返すように 変更しないのはなぜですかString

public class Getter {
...
...

    public String getInfo(int getString) {
        _getString = getString * 8;
        return Integer.toString(_getString);
    }
}

そして、この返されたテキストをバインドするonClick場合MainActivityTextView

于 2013-02-23T13:42:47.097 に答える