67

是否可以仅覆盖onBackPressed()一项活动?

单击后退按钮时,我想调用特定活动的对话框,但在所有其他活动中,我希望它像以前一样工作(转到以前的活动)。

已编辑

谢谢大家的回答,我已经拥有了你告诉我的一切,但我的问题是,当我在另一个活动上单击后退按钮时,我要去我以前的活动(我有后退按钮被覆盖的那个),我以为它不起作用,我以为它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 回答
43

onBackPressed()根据 codeMagic 的示例覆盖该方法,super.onBackPressed();如果您不希望执行默认操作(完成当前活动),请删除对的调用。

于 2013-08-20T14:35:14.017 回答
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

控制音乐的最佳和最通用的方法是创建一个母 Activity,您可以在其中覆盖startActivity(Intent intent)- 在其中放入shouldPlay=true,然后onBackPressed()在其中放入shouldPlay = trueonStop- 在其中您放置一个条件 mediaPlayer.stop 与 shouldPlay 作为条件

然后,只需将母活动扩展到所有其他活动,无需重复代码。

于 2015-04-23T22:57:53.487 回答
0

首先,您必须考虑,如果您的活动(我称为 A)扩展了另一个活动(B)并且在两者中

如果你想使用 onbackpressed 函数,那么你在 B 中的每个代码也都在 A 中运行。所以如果你想把它们分开,你应该把它们分开。这意味着 A 不应该扩展 B ,那么您可以分别为它们中的每一个进行 onbackpressed。

于 2016-02-29T11:52:09.770 回答
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 回答