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

时间:2016-12-29 10:37:04

标签: android android-emulator android-lifecycle

我在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,发生了同样的事情。

4 个答案:

答案 0 :(得分:2)

尝试运行超级方法:

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

它将调用正常的反压,并显示Toast

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我会实现一个对话框询问用户是否要退出,然后调用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替换为您的活动名称。

答案 3 :(得分:0)

删除此代码

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自己调用。 你不需要把它叫做yourslef。