1つのアクティビティのみでonBackPressed()
をオーバーライドできますか?
[戻る]ボタンをクリックして、特定のアクティビティでダイアログを呼び出したいが、他のすべてのアクティビティでは、以前の動作(以前のアクティビティに移動)で動作させたい。
編集
あなたの答えをみんなありがとう、私はあなたが私に言ったようなすべてをすでに持っていましたが、私の問題は、別のアクティビティの戻るボタンをクリックしたときに、前のアクティビティ(私は戻るボタンがオーバーライドされたもの)に行き、それが機能していないと思った、私はそれがアプリケーション全体でonBackPressed()
をオーバーライドしていると思った、今私はそれを得た。
はい。そのActivity
でのみオーバーライドします
@Override
public void onBackPressed()
{
// code here to show dialog
super.onBackPressed(); // optional depending on your needs
}
このコードを他のActivity
に入れないでください
CodeMagicの例に従ってonBackPressed()
メソッドをオーバーライドし、デフォルトアクション(現在のアクティビティを終了する)を実行したくない場合はsuper.onBackPressed();
への呼び出しを削除します。
OnBackPressed()を呼び出すだけで、戻るボタンの後にアクティビティを表示したい場合は、
Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class);
startActivity(intent);
finish();
それは私のために働いた。
ダイアログを表示するアクティビティでonBackPressed()
メソッドを呼び出すだけで、その中にダイアログが表示されます。
次のコードを使用してフィールドを初期化するだけです
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();
}
音楽を制御するための最良かつ最も一般的な方法は、startActivity(Intent intent)
をオーバーライドするマザーアクティビティを作成することです。その中にshouldPlay=true
を配置し、onBackPressed()
-にshouldPlay = true
を配置します。 onStop
-その中に、shouldPlayを条件として条件付きmediaPlayer.stopを入れます
次に、母親のアクティビティを他のすべてのアクティビティに拡張するだけで、コードを複製する必要はありません。
これを試してみる
@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();
}
最初に、Aと呼んだアクティビティが別のアクティビティ(B)を拡張し、
onbackpressed関数を使用する場合、BにあるすべてのコードはAでも実行されます。したがって、これらを分離する場合は、分離する必要があります。これは、AがBを拡張してはならないことを意味し、それらのそれぞれに対して個別にonbackpressedを実行できます。