1

MainActivity を開くたびに onCreate を呼び出すにはどうすればよいですか?

これを行いたい: アプリを開き、これが MainActivity であり、ActivityB を開いてデータを保存します。ActivityB を閉じると MainActivity に戻りますが、onCreate が呼び出されていないため、MainActivity のデータは更新されません。

このように解決するのは正しいですか(これは機能していますが、良い方法ではないことはわかっています):

ActivityB に移動するためのボタン:

 public void ActivityB(View view){
    Intent intent = new Intent(this, ActivityB.class);
    startActivity(intent);
    finish();
}

MainActivity に戻るためのボタン:

public void Back(View view){
    finish();
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}
4

3 に答える 3

2

これを調べる必要があります: http://developer.android.com/training/basics/activity-lifecycle/pausing.html

基本的に、すべてのアクティビティには「onResume」などの「onCreate」以外のイベントがあり、この場合は MainActivity がフォアグラウンドに戻ったときに呼び出され、そこにコードを配置する必要があります。

于 2013-04-07T16:49:50.110 に答える
0

メイン アクティビティ A に Textview があり、次を使用してテキストを設定しているとします。

Textview myTextview =(Textview)findViewbyId(R.id.textview1);
myTextView.setText("Android");

アクティビティ A からアクティビティ B に移動しています。アクティビティ B が終了すると、アクティビティ A の onResume() メソッドが呼び出されます。したがって、 onResume() で次のようにテキストビューを更新します

onResume(){
myTextview.setText("Jelly Bean")};

したがって、画面に戻ったときに更新するビューは、そのアクティビティの onResume() メソッドで実行します。それが明確であることを願っています

于 2013-04-07T17:20:05.540 に答える
0

使用するstartActivityForResult

public void ActivityB(View view){
Intent intent = new Intent(this, ActivityB.class);
startActivityForResult(intent, 1);

}

次にonActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
    super.onActivityResult(requestCode, resultCode, intent);

    String sp = intent.getStringExtra("sp");
}  

アクティビティ B で

@Override
public void onBackPressed()
{
    Intent i = new Intent();
    i.putExtra("sp", value); // the change value of sp
    setResult(RESULT_OK);
}
于 2013-04-07T16:50:11.600 に答える