23

私が主な活動をしていて、新しい活動を始めたとしましょう

MainActivity > NewActivity

そして、NewActivity私は戻るキーを押します

MainActivity < NewActivity

閉じた後に表示されているが、アプリケーションを最初に実行するときなど、通常の実行時ではない場合MainActivityに何かを実行したい。これが可能かどうか誰かが知っていますか?NewActivityMainActivity

4

5 に答える 5

22
@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
    }
}
于 2012-06-25T02:06:58.757 に答える
13

以下の方法を試して、最初の方法でアクションバーで押された戻るボタンを検出し、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();
}
于 2016-06-23T12:00:20.493 に答える
12

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の後に開かれるかどうかを確認できます。

于 2012-06-25T05:02:55.987 に答える
7

いくつかのアイデア:

  • MainActivity起動時にフラグを設定するだけですNewActivity
  • startActivityForResultから電話して結果を設定するMainActivityように手配することができます。結果は終了時NewActivityに受け取ります。MainActivity.onActivityResult()NewActivity
于 2012-06-25T02:04:43.383 に答える
0

開始するときは、有効なNewActivityを使用して使用する必要があります。そのようなものは、一度終了するとあなたに返されます。startActivityForResultrequestIdrequestIdonActivityResultNewActivity

于 2012-06-25T02:03:32.877 に答える