是否可以仅覆盖onBackPressed()
一项活动?
单击后退按钮时,我想调用特定活动的对话框,但在所有其他活动中,我希望它像以前一样工作(转到以前的活动)。
已编辑
谢谢大家的回答,我已经拥有了你告诉我的一切,但我的问题是,当我在另一个活动上单击后退按钮时,我要去我以前的活动(我有后退按钮被覆盖的那个),我以为它不起作用,我以为它onBackPressed()
在整个应用程序中都被覆盖了,现在我明白了。
是否可以仅覆盖onBackPressed()
一项活动?
单击后退按钮时,我想调用特定活动的对话框,但在所有其他活动中,我希望它像以前一样工作(转到以前的活动)。
已编辑
谢谢大家的回答,我已经拥有了你告诉我的一切,但我的问题是,当我在另一个活动上单击后退按钮时,我要去我以前的活动(我有后退按钮被覆盖的那个),我以为它不起作用,我以为它onBackPressed()
在整个应用程序中都被覆盖了,现在我明白了。
是的。只用那个覆盖Activity
它
@Override
public void onBackPressed()
{
// code here to show dialog
super.onBackPressed(); // optional depending on your needs
}
不要将此代码放在任何其他Activity
onBackPressed()
根据 codeMagic 的示例覆盖该方法,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();
}
控制音乐的最佳和最通用的方法是创建一个母 Activity,您可以在其中覆盖startActivity(Intent intent)
- 在其中放入shouldPlay=true
,然后onBackPressed()
在其中放入shouldPlay = true
。
onStop
- 在其中您放置一个条件 mediaPlayer.stop 与 shouldPlay 作为条件
然后,只需将母活动扩展到所有其他活动,无需重复代码。
首先,您必须考虑,如果您的活动(我称为 A)扩展了另一个活动(B)并且在两者中
如果你想使用 onbackpressed 函数,那么你在 B 中的每个代码也都在 A 中运行。所以如果你想把它们分开,你应该把它们分开。这意味着 A 不应该扩展 B ,那么您可以分别为它们中的每一个进行 onbackpressed。
试试这个它的工作
@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();
}