私が主な活動をしていて、新しい活動を始めたとしましょう
MainActivity > NewActivity
そして、NewActivity
私は戻るキーを押します
MainActivity < NewActivity
閉じた後に表示されているが、アプリケーションを最初に実行するときなど、通常の実行時ではない場合MainActivity
に何かを実行したい。これが可能かどうか誰かが知っていますか?NewActivity
MainActivity
私が主な活動をしていて、新しい活動を始めたとしましょう
MainActivity > NewActivity
そして、NewActivity
私は戻るキーを押します
MainActivity < NewActivity
閉じた後に表示されているが、アプリケーションを最初に実行するときなど、通常の実行時ではない場合MainActivity
に何かを実行したい。これが可能かどうか誰かが知っていますか?NewActivity
MainActivity
@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の後に開かれるかどうかを確認できます。
いくつかのアイデア:
MainActivity
起動時にフラグを設定するだけですNewActivity
。startActivityForResult
から電話して結果を設定するMainActivity
ように手配することができます。結果は終了時NewActivity
に受け取ります。MainActivity.onActivityResult()
NewActivity
開始するときは、有効なNewActivity
を使用して使用する必要があります。そのようなものは、一度終了するとあなたに返されます。startActivityForResult
requestId
requestId
onActivityResult
NewActivity