Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 返回按钮关闭应用程序_Android - Fatal编程技术网

Android 返回按钮关闭应用程序

Android 返回按钮关闭应用程序,android,Android,我有一个启动屏幕,它通向一个主导航屏幕,其中有动画来介绍按钮。我想要的是在按下后退按钮时关闭应用程序。它当前在调用return按钮时重新加载活动(main)——这是为什么 我在论坛上四处查看,其中一种方法是使用finish()方法。我尝试在main.java类中实现这一点,如下所示: public boolean onKeyDown(int keyCode, KeyEvent event) { if( keyCode == KeyEvent.KEYCODE_BACK ) {

我有一个启动屏幕,它通向一个主导航屏幕,其中有动画来介绍按钮。我想要的是在按下后退按钮时关闭应用程序。它当前在调用return按钮时重新加载活动(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()方法不起作用呢?

可能是在onKeyDown之前获得keydown事件。

如果我要这样做,我会从启动屏幕活动a调用。返回一个布尔值,告诉活动退出,然后完成基本活动。

确保在调用
startActivity
后在启动屏幕活动中调用
finish
,然后在
onKeyDown
中尝试此操作:

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

        return super.onKeyDown(keyCode, event);
    }
在你的活动中这样做,而不是听按键

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