我有一个启动画面,它通向一个主导航屏幕,其中有动画来介绍按钮。我想要的是按下后退按钮时关闭应用程序。它当前在调用返回按钮时重新加载活动(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()方法没有?
答案 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;
}
在您的活动中执行此操作,而不是按键按下。