Android Overriding onBackPressed()



是否可以仅为一个活动覆盖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弃用。

Kotlin解决方案:

onBackPressedDispatcher.addCallback(object: OnBackPressedCallback(true) {
            /* override back pressing */
            override fun handleOnBackPressed() {
                //Your code here
            }
        })

只需在要显示对话框的活动中调用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 = trueonStop-在其中,您放置了一个条件媒体播放器。stop,并将shouldPlay作为条件

然后,只需将母活动扩展到所有其他活动,就不需要代码复制。

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

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

试试这个它的工作

  @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();
}

相关内容

  • 没有找到相关文章

最新更新