2013-12-13 129 views
0

我知道当用户按下后退按钮时,不应该调用saveoninstance。当用户使用退出按钮退出时保存应用程序

我有一个由用户动态添加许多edittext的布局,然后用户可以输入文本。我设法保存这些当用户旋转屏幕使用saveoninstance等

但是,我也想保存这些时,用户退出应用程序使用后退按钮,所以当应用程序再次打开时,应该有一个“继续”按钮让用户继续(即再次添加所有文本框)。我知道如何保存和检索它们,但我应该使用哪种方法?我应该写一个文件作为例子吗?谢谢。

回答

1

当用户按下后按钮应用程序关闭。当他再次打开应用程序时,它会以新实例开始,并且不记得之前用户完成的操作。 如果u有保存数据,那么在哪里保存(如首选项或数据库)中onPasue的onDestroy

1

如果你知道如何保存和检索它们,你为什么不只是覆盖后退按钮并在那里写保存功能。

例如

public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
    // TODO Auto-generated method stub 
    return false; 
    } 

    @Override 
    public void onBackPressed() 
    { 
    /*Your functione here to what should be done on Back Button Press event*/ 
    } 
0

你必须做的是,你必须重写下面的方法在你的活动,

@Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     super.onBackPressed(); 
    } 

,并保存在SharedPrefrence您的活动状态,而当你输入你的活动得到下一次来自Sharedpreference的值并相应地设置状态。

实施例,

private void SavePreferences(){ 
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putBoolean("state", "true"); 
    editor.commit(); 
    } 

     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(); 
} 
0

在机器人基本上共享偏好用来保存一个活动的状态或到应用程序的范围内保存重要数据单元,直到应用程序被安装在数据仍然会保存设备。共享首选项也可用作用于自动登录过程的会话。

看到这个Documentation

这里是一个Example

0

那么它很简单。所有你需要做的是:

  1. 使用共享首选项和捆绑。

  2. 保存一切都在onSavedInstanceState(Bundle outState)

现在,你是怎么做到的是:

  1. 覆盖功能onSavedInstanceStae(Bundle outState) 和里面

  2. 保存一切都在共享偏好,然后捆绑它们,然后这个捆绑包将作为中的一个参数自动发送

  3. 因此在您的onCreate检查bundle==null;是否不检索sharedPreferences并加载数据就像保存它。

相关问题