按下模拟器中的后退按钮时如何调用方法

How to call a method when back button in emulator pressed

我为我的 ActionBar Button 使用了下面的代码,它可以返回到之前的 Activity 并显示 Toast

 case android.R.id.home:
 Toast.makeText(getApplication(),"A",Toast.LENGTH_SHORT).show();
 onBackPressed();
 return true;

如果我在模拟器中按回键,则不会显示 Toast。所以我决定添加这个

 public void onBackPressed()
    {
        Toast.makeText(getApplication(),"A",Toast.LENGTH_SHORT).show();
        return;
    }

添加这个后,当我在模拟器中按下后退按钮时,它显示Toast但不返回到之前的Activity。我点击 ActionBar Button,同样的事情发生了。

尝试运行超级方法:

    public void onBackPressed()
    {
        super.onBackPressed();
        Toast.makeText(getApplication(),"A",Toast.LENGTH_SHORT).show();
    }

会调用正常的回按,并显示Toast

我会实现一个对话框,询问用户是否想退出,如果他们想退出,则调用 super.onBackPressed()。

@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
        .setTitle("Really Exit?")
        .setMessage("Are you sure you want to exit?")
        .setNegativeButton(android.R.string.no, null)
        .setPositiveButton(android.R.string.yes, new OnClickListener() {

            public void onClick(DialogInterface arg0, int arg1) {
                WelcomeActivity.super.onBackPressed();
            }
        }).create().show();
}

在上面的示例中,您需要将 WelcomeActivity 替换为您 activity 的名称。

你必须覆盖 onBackPressed() 方法然后把你的 Toast 放在那里

@Override
public void onBackPressed()
{
    super.onBackPressed();
    Toast.makeText(getApplication(),"A",Toast.LENGTH_SHORT).show();      
}

删除此代码

case android.R.id.home:
    Toast.makeText(getApplication(),"A",Toast.LENGTH_SHORT).show();
    onBackPressed();
    return true;

并且只需使用此覆盖方法

@Override
public void onBackPressed()
{
    super.onBackPressed()
    Toast.makeText(getApplication(),"A",Toast.LENGTH_SHORT).show();
}

它会在你按下后退按钮时由 android 自己调用。 你不需要自己称呼它。