是否可以仅为一项活动覆盖onBackPressed()
?
在后退按钮上单击我想调用特定活动的对话框,但在所有其他活动中,我希望它在之前工作(转到上一个活动)。
EDITED
谢谢大家的答案,我已经拥有了你告诉我的所有内容,但我的问题是,当我点击另一个活动的后退按钮时,我会去我之前的活动(那里我有后退按钮Overridden)和我认为它不起作用,我认为它在整个应用程序中压倒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(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();
}
控制音乐的最佳和最通用的方法是创建一个母亲活动,你在其中覆盖startActivity(Intent intent)
- 在其中放入shouldPlay=true
和onBackPressed()
- 你放入shouldPlay = true
。 onStop
- 在其中你把一个条件的mediaPlayer.stop与shouldPlay作为条件
然后,只需将母活动扩展到所有其他活动,并且不需要重复代码。
首先,你必须考虑如果我所谓的A活动扩展了另一项活动(B),并且两者都延伸
他们想要使用onbackpressed函数,那么你在B中的每个代码也会在A中运行。因此,如果你想分开这些,你应该将它们分开。这意味着A不应该扩展B,那么你可以为它们中的每一个单独进行反向压缩。
试试这个工作
@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();
}