在Android上单击后退按钮时调用的功能

时间:2011-03-23 00:50:19

标签: android

单击android上的后退按钮时调用的函数。我的要求是当应用程序运行并且用户单击后退按钮时,应用程序的状态应该存储到数据库中,并且用户应该能够在他返回应用程序时看到状态。

浏览互联网,我知道我们可以使用onKeyDown()功能处理控件。但是,即使我在我的代码中使用它,当我单击后退按钮时也不会调用该函数。以下是功能:

  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
      Log.d(null,"In on Key Down");
      if (keyCode == KeyEvent.KEYCODE_BACK) {
          moveTaskToBack(true);
          return true;
      }
      return super.onKeyDown(keyCode, event);
  }

如果有人遇到相同/类似情况,请提出建议。

5 个答案:

答案 0 :(得分:14)

按下后退按钮时调用的活动功能是onBackPressed。

void onBackPressed() 当活动检测到用户按下后退键时调用。

如果你来这里而不是专门用于保存状态,那就是upvote:P

答案 1 :(得分:6)

使用Activity生命周期方法保存和恢复状态。您可以在onPause期间保存状态并在onResume中恢复。在您的活动中:

 @Override
protected void onPause()
{
super.onPause();
    //Save state here
}

@Override
protected void onResume()
{
super.onResume();
    //Restore state here
}

您也可以在onStart / onStop中执行此操作。在此处查看活动生命周期:http://developer.android.com/reference/android/app/Activity.html

答案 2 :(得分:0)

您不必覆盖后退按钮行为以保存活动状态。

只需覆盖onPause()并保存您想要的任何持久状态。

答案 3 :(得分:0)

将更改保存到SharedPreferences,并将更改提交回SQLite中的onPause个数据库。将它们加载到onResume

要保存活动的当前状态(例如,用户打开了哪个标签),请使用onSaveInstance(Bundle outState)Bundle传递给您的onCreate (Bundle savedInstanceState)来存储和检索此信息

答案 4 :(得分:0)

在后方条件

中将返回值更改为false
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
  Log.d(null,"In on Key Down");
  if (keyCode == KeyEvent.KEYCODE_BACK) {
      moveTaskToBack(true);
      return false;
  }
  return super.onKeyDown(keyCode, event);

}