1

A1とA2の2つのアクティビティがあります。シーケンスはA1->A2です。A1からA1でfinish()を呼び出さずにA2を開始します。A2で戻るボタンを押した後、A1で機能をトリガーしたいと思います。ただし、A1でonResume()を使用すると、アクティビティA1の開始中でも関数がトリガーされるため、避けたいと思います。A2の「戻る」プレス中にのみ呼び出す必要があります。

4

4 に答える 4

4

さて、A2を開始してstartActivityForResultから

A1実装

  @Override
  public void onActivityResult(final int requestCode, int resultCode, final Intent data) {

   // your code here

}

A2では、onBackPressetをオーバーライドして、アクティビティを終了する前に結果を設定します。それでおしまい。

于 2012-04-17T10:04:36.013 に答える
1

これがもう1つのアプローチです(1つはDimitarによるものです)。

public class A extends Activity {
    public static boolean isCalledFromB = false;

    public void onCreate(Bundle instance) {
        isCalledFromB = false;
    }

    public void onResume()
    {
        if(isCalledFromB)
            dosomething();

    }

    public void dosomething() {

    }

}

public class B extends Activity {
..............

    public boolean onKeyDown(int keycode, KeyEvent event) {
        if (keycode == KeyEvent.KEYCODE_BACK) {
            A.isCalledFromB=true;
            finish();
        } 
        return true;
    }

}
于 2012-04-17T10:48:06.713 に答える
-1

onBackPressed()次に、A2アクティビティ内のメソッドをオーバーライドします。

参考:Android 2.xで動作します。それ以外の場合は、Android 1.xでonKeyDown()を使用できます。

2番目の方法:

を使用して、アクティビティA1内でA2アクティビティを開始しstartActivityForResult()ます。したがって、戻るキーを押すとonActivityResult()、A1アクティビティ内にリダイレクトされます。したがって、onActivityResult()内に、そのコードを記述できます。

于 2012-04-17T10:02:33.147 に答える
-1

onResume初回か再起動かに関係なく、常に呼び出されます。オーバーライドすることで同じことを達成できますonRestart()

編集1:

他のユーザーの提案に従って、代わりにstartActivityForResultを使用してください。

于 2012-04-17T10:05:20.243 に答える