是否可以仅为一项活动覆盖onBackPressed()
?
在后退按钮上单击我想调用特定活动的对话框,但在所有其他活动中,我希望它能够像以前一样工作(转到上一个活动)。
EDITED
谢谢大家的答案,我已经拥有了你告诉我的所有内容,但我的问题是,当我点击另一个活动的后退按钮时,我会去我之前的活动(那里我有后退按钮Overridden )我认为它不起作用,我认为它在整个应用程序中覆盖onBackPressed()
,现在我得到了它。
答案 0 :(得分:126)
是。只能在Activity
中使用
@Override
public void onBackPressed()
{
// code here to show dialog
super.onBackPressed(); // optional depending on your needs
}
不要将此代码放在任何其他Activity
答案 1 :(得分:36)
按照codeMagic的示例覆盖onBackPressed()
方法,如果不希望执行默认操作(完成当前活动),则删除对super.onBackPressed();
的调用。
答案 2 :(得分:4)
您可以调用onBackPressed(),如果您想在后退按钮后显示某些活动,则提及
Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class);
startActivity(intent);
finish();
对我有用。
答案 3 :(得分:2)
只需在要显示对话框的活动中调用onBackPressed()
方法,然后在其中显示对话框。
答案 4 :(得分:1)
只需使用以下代码初始化字段
即可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(ResetActivity.this, LoginActivity.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();
}
答案 5 :(得分:0)
控制音乐的最佳和最通用的方法是创建一个母亲活动,在其中覆盖startActivity(Intent intent)
- 在其中放置shouldPlay=true
,
和onBackPressed()
- 在其中放置了shouldPlay = true
。
onStop
- 在其中放置条件mediaPlayer.stop,其中shouldPlay为条件
然后,只需将母活动扩展到所有其他活动,不需要重复代码。
答案 6 :(得分:0)
首先,你必须考虑如果我所谓的A活动扩展了另一项活动(B),并且两者都在
他们想要使用onbackpressed函数,那么B中的每个代码也会在A中运行。因此,如果你想分开这些,你应该将它们分开。这意味着A不应该扩展B,那么你可以为每个人单独进行反向压缩。
答案 7 :(得分: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();
}