我正在开发一个Android应用程序。如果我按下后退按钮,应该保存我的应用程序的状态。我应该使用什么来保存状态..am与所有这些onPause()
,onResume()
或onRestoresavedInstance()
混淆? ??我应该使用哪些来保存我的应用程序状态?例如,当我按退出按钮时,我的整个应用程序应该退出我已经使用了finish()?
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
s1=(Button)findViewById(R.id.sn1);
s1.setOnClickListener(this);
LoadPreferences();
s1.setEnabled(false);
}
public void SavePreferences()
{
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("state", s1.isEnabled());
}
public void LoadPreferences()
{
System.out.println("LoadPrefe");
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
Boolean state = sharedPreferences.getBoolean("state", false);
s1.setEnabled(state);
}
@Override
public void onBackPressed()
{
System.out.println("backbutton");
SavePreferences();
super.onBackPressed();
}
答案 0 :(得分:12)
您需要做的是,而不是使用KeyCode Back,您已在Activity中覆盖以下方法,
@Override
public void onBackPressed() {
super.onBackPressed();
}
使用 SharedPrefrence 保存按钮的状态,下次当您输入活动时,从共享偏好获取值并相应地设置按钮的启用状态
示例,
private void SavePreferences(){
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("state", button.isEnabled());
editor.commit(); // I missed to save the data to preference here,.
}
private void LoadPreferences(){
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
Boolean state = sharedPreferences.getBoolean("state", false);
button.setEnabled(state);
}
@Override
public void onBackPressed() {
SavePreferences();
super.onBackPressed();
}
onCreate(Bundle savedInstanceState)
{
//just a rough sketch of where you should load the data
LoadPreferences();
}
答案 1 :(得分:4)
你可以这样使用
public void onBackPressed() {
// Save settings here
};
当活动检测到用户按下后退键时调用。默认实现只是完成当前活动,但您可以覆盖它以执行任何操作。
在此方法中保存您的应用程序状态。