ユーザーが他のアクティビティを押し返したために、自分のアクティビティが表示されたかどうかを知りたいのですが。ライフサイクルでは、その情報をしっかりと提供しているコールバックを特定できませんでした。
onRestart()
動かない。アプリタスクが前面に表示された場合にも起動します。
onResume()
同じ理由で動作しません。
そのための簡単な解決策があると思いますが、Androidではおそらく単純なことはかなり厄介なことがあります。
ユーザーが他のアクティビティを押し返したために、自分のアクティビティが表示されたかどうかを知りたいのですが。ライフサイクルでは、その情報をしっかりと提供しているコールバックを特定できませんでした。
onRestart()
動かない。アプリタスクが前面に表示された場合にも起動します。
onResume()
同じ理由で動作しません。
そのための簡単な解決策があると思いますが、Androidではおそらく単純なことはかなり厄介なことがあります。
で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();
}