按下后退按钮时保存状态

时间:2012-08-29 05:18:36

标签: android sharedpreferences android-lifecycle savestate

我正在开发一个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();
 }

2 个答案:

答案 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   
};

当活动检测到用户按下后退键时调用。默认实现只是完成当前活动,但您可以覆盖它以执行任何操作。

在此方法中保存您的应用程序状态。