67

onBackPressed()1 つのアクティビティのみをオーバーライドすることはできますか?

戻るボタンをクリックすると、特定のアクティビティでダイアログを呼び出したいのですが、他のすべてのアクティビティでは、以前と同じように動作するようにします (以前のアクティビティに移動します)。

編集済み

皆さんの回答に感謝します。あなたが私に言ったように、私はすでにすべてを持っていましたが、私の問題は、別のアクティビティの戻るボタンをクリックすると、以前のアクティビティ (戻るボタンがオーバーライドされたもの) に行くことでした。機能していないと思っていたのですがonBackPressed()、アプリケーション全体でオーバーライドしていると思っていましたが、今はそれを手に入れました。

4

8 に答える 8

154

はい。その中でのみオーバーライドしActivityます

@Override
public void onBackPressed()
{
     // code here to show dialog
     super.onBackPressed();  // optional depending on your needs
}

このコードを他のコードに入れないでくださいActivity

于 2013-08-20T14:25:24.783 に答える
5

onBackPressed() を呼び出すだけで、戻るボタンの後に何らかのアクティビティを表示したい場合は、

Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class);
    startActivity(intent);
    finish();

それは私のために働いた。

于 2015-05-18T10:31:15.480 に答える
2

onBackPressed()ダイアログを表示したいアクティビティでメソッドを呼び出すだけで、その中にダイアログが表示されます。

于 2013-08-20T14:25:06.783 に答える
2

フィールドの初期化で次のコードを使用するだけです

private int count = 0;
    @Override
public void onBackPressed() {
    count++;
    if (count >=1) {
        /* If count is greater than 1 ,you can either move to the next 
        activity or just quit. */
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);
        finish();
        overridePendingTransition
        (R.anim.push_left_in, R.anim.push_left_out);
        /* Quitting */
        finishAffinity();
    } else {
        Toast.makeText(this, "Press back again to Leave!", Toast.LENGTH_SHORT).show();

        // resetting the counter in 2s
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                count = 0;
            }
        }, 2000);
    }
    super.onBackPressed();
}
于 2018-02-21T06:17:36.137 に答える
0

最初に、私が A と呼んだアクティビティが別のアクティビティ (B) を拡張し、両方で

onbackpressed 関数を使用したい場合は、B にあるすべてのコードが A でも実行されます。したがって、これらを分離したい場合は、それらを分離する必要があります。これは、 A が B を拡張してはならないことを意味し、それぞれに対して個別に onbackpressed を使用できます。

于 2016-02-29T11:52:09.770 に答える
0

音楽を制御する最善かつ最も一般的な方法は、オーバーライドする親アクティビティを作成するstartActivity(Intent intent)ことです。 - その中に、条件として shouldPlay を指定した条件付きの mediaPlayer.stop を入れますshouldPlay=trueonBackPressed()shouldPlay = trueonStop

次に、マザー アクティビティを他のすべてのアクティビティに拡張するだけで、コードの複製は必要ありません。

于 2015-04-23T22:57:53.487 に答える
0

これを試してみてください

  @Override
public void onBackPressed(){
        super.onBackPressed();
         Intent i=new Intent(Intent.ACTION_MAIN);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        finish();
}
于 2017-08-30T06:25:19.433 に答える