后退按钮关闭应用程序

时间:2011-05-31 17:49:09

标签: android

我有一个启动画面,它通向一个主导航屏幕,其中有动画来介绍按钮。我想要的是按下后退按钮时关闭应用程序。它当前在调用返回按钮时重新加载活动(main) - 为什么会这样?

我在论坛上看过,一种方法是使用finish()方法。我尝试在main.java类中实现它,如下所示:

public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if( keyCode == KeyEvent.KEYCODE_BACK ) 
    {     
        this.finish();

        return true;
    }
    return false;
}

但上面没有这样做 - 我做错了什么?

干杯

更新

欢呼所有人迅速回复,但这些都不起作用。但我想我可能知道为什么 - 我的类只实现了onCreate()方法而没有其他方法。这可能是所有其他方法失败的原因吗?

更新

嗨 - 我对它进行了分类,但此时我还没有理解为什么这样做有效。其他方法不起作用:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if ( keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 ) 
    {
        // do something on back.
        moveTaskToBack( true );
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

那么为什么这个工作和ekawas演示的onBackPressed()中使用的finish()方法没有?

4 个答案:

答案 0 :(得分:1)

onBackPressed可能在你的onKeyDown之前得到了keydown事件。

答案 1 :(得分:1)

如果我这样做,我会在启动画面活动中调用startActivityForResults。返回一个布尔值,告诉活动退出,然后完成基本活动。

答案 2 :(得分:1)

请务必在致电finish后在启动画面活动中致电startActivity,然后在onKeyDown中尝试此操作:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
            finish();
        }

        return super.onKeyDown(keyCode, event);
    }

答案 3 :(得分:1)

@overide
public void onBackPressed() {
   finish();
   return;
}

在您的活动中执行此操作,而不是按键按下。