14

ユーザーが他のアクティビティを押し返したために、自分のアクティビティが表示されたかどうかを知りたいのですが。ライフサイクルでは、その情報をしっかりと提供しているコールバックを特定できませんでした。

onRestart()動かない。アプリタスクが前面に表示された場合にも起動します。 onResume()同じ理由で動作しません。

そのための簡単な解決策があると思いますが、Androidではおそらく単純なことはかなり厄介なことがあります。

4

1 に答える 1

18

で2番目のアクティビティを呼び出しstartActivityForResult(Intent, int)、次に2番目のアクティビティでをオーバーライドしonBackPressed()てに設定setResult()RESULT_CANCELEDます。最後に、最初のアクティビティでそれをキャッチしonActivityResult()ます。

コード例:

アクティビティ1:

Intent i = new Intent(Activity1.this, Activity2.class);
startActivityForResult(i, 0);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) {
        if (resultCode == RESULT_CANCELED) {
                // user pressed back from 2nd activity to go to 1st activity. code here
        }
    }
}

アクティビティ2:

@Override
public void onBackPressed() {
    setResult(RESULT_CANCELED);
    finish();
}
于 2012-08-28T12:05:10.377 に答える