单击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);
}
如果有人遇到相同/类似情况,请提出建议。
答案 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);
}