私が自分のメインアクティビティにいて、新しいアクティビティを開始するとします
MainActivity > NewActivity
そして、NewActivity
から、戻るキーを押します
MainActivity < NewActivity
MainActivity
が閉じた後に表示されている場合はNewActivity
で何かを実行したいが、アプリケーションを最初に実行したときなど、MainActivity
が正常に実行されている場合はそうしないでください。これが可能かどうか誰かが知っていますか?
いくつかのアイデア:
MainActivity
が起動したときに、NewActivity
にフラグを設定するだけです。startActivityForResult
からMainActivity
を呼び出し、NewActivity
を調整して結果を設定できます。結果はNewActivity
が終了したときにMainActivity.onActivityResult()
で受け取ります。@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Log.d(this.getClass().getName(), "back button pressed");
}
return super.onKeyDown(keyCode, event);
}
@更新。 NewActivityの終了時に通知を受け取りたい場合は、startActivityForResult(Intent、requestCode)で開始する必要があります。次に、MainActivityのonActivityResult()をオーバーライドする必要があります。ここでrequestcodeパラメータを確認し、戻りコードが送信コードと等しい場合(childActivityを開始するとき)、ビジネスを行うためのコードを入力します。
int MYCODE=1000;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Result OK.d.
if (requestCode == MYCODE) {
// do something good
}
}
最初の方法でアクティビティのアクションバーで押された戻るボタンを検出するために以下の方法を試し、2番目の方法はモバイルハードウェアボタンの戻るまたはアクティビティボタンを強制終了するために使用されます。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case Android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
super.onBackPressed();
}
NewActivityのonBackPressed()メソッドをオーバーライドして、戻るボタンが押されたことを検出できます。次に、MainActivityに通知するために、バンドルでブールフラグを送信して、MainActivityがNewActivityの後にその開始を検出できるようにします。
NewActivity:
@Override
public void onBackPressed() {
boolean fromNewActivity=true;
Intent mainIntent = new Intent(view.getContext(), MainActivity.class);
Bundle bundleObj = new Bundle();
bundleObj.putString("fromNewActivity", Boolean.toString(fromNewActivity));
mainIntent.putExtras(bundleObj);
startActivityForResult(mainIntent, 0);
}
OnCreate()メソッドのMainActivityで:
Bundle extras = getIntent().getExtras();
boolean fromNewActivity =Boolean.parseBoolean( extras.getString("fromNewActivity"));
これで、MainActivityがNewActivityの後に開かれたかどうかを確認できます。
NewActivity
を起動するときは、startActivityForResult
を使用し、有効なrequestId
を使用する必要があります。そのようなrequestId
は、onActivityResult
が終了するとNewActivity
に戻されます。