保存活动信息android

时间:2013-12-10 11:29:01

标签: android

我的应用程序中存在严重问题,它涉及活动状态,在每个活动中,他都有单选按钮检查按钮和编辑文本,我希望用户返回时 发现他选择的所有信息是相同的,我读了很多关于android中应用程序的循环,但是我无法使它工作,如果有人帮助我,我会很高兴。

 public class ActivityDeux  extends Activity {



 final String PREFS_NAME = "MyPrefsFile";
    final String ID = "id";
 DBAdapter db = new DBAdapter(this);



     public void  ajouter(View v) {
         db.open();

         SharedPreferences prefs2 = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
         long id = prefs2.getLong(ID, 0);
         db.insertMENAGE2(id,a16,b17,rm_18_1ts,rm_18_2ts,c19,d20,e21);

        db.close();

        } 

  int a16;
  int b17;
  int c19;
  int d20;
  int e21;


private RadioGroup rm_16;
private RadioButton  rm_16_1 ;
private RadioButton  rm_16_2 ;
private RadioButton  rm_16_3 ;
private RadioButton  rm_16_4 ;
private RadioButton  rm_16_5 ;
private RadioButton  rm_16_6 ;
private RadioButton  rm_16_7 ;
EditText  rm_16_autre;
String rm_16_autrets = "";

private RadioGroup   rm_17;
private RadioButton  rm_17_1 ;
private RadioButton  rm_17_2 ;
private RadioButton  rm_17_3;
private RadioButton  rm_17_4 ;
private RadioButton  rm_17_5 ;
EditText  rm_17_autre;
String rm_17_autrets = "";

EditText  rm_18_1 ;
EditText  rm_18_2 ;
String rm_18_1ts  = "";
String rm_18_2ts  = "";

private RadioGroup   rm_19;
private RadioButton  rm_19_1 ;
private RadioButton  rm_19_2 ;
private RadioButton  rm_19_3;
private RadioButton  rm_19_4 ;
private RadioButton  rm_19_5 ;
EditText  rm_19_5_autre;
String rm_19_5_autrets = "";



private RadioGroup   rm_20;
private RadioButton  rm_20_1 ;
private RadioButton  rm_20_2 ;
private RadioButton  rm_20_3;
private RadioButton  rm_20_4 ;
private RadioButton  rm_20_5 ;
EditText  rm_20_5_autre ;
String  rm_20_5_autrets = "";

private RadioGroup   rm_21;
private RadioButton  rm_21_1 ;
private RadioButton  rm_21_2 ;
private RadioButton  rm_21_3;
private RadioButton  rm_21_4 ;
private RadioButton  rm_21_5 ;
EditText  rm_21_5_autre ;
String rm_21_5_autrets =  "";



protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_deux);



      rm_16_autre = (EditText)findViewById(R.id.rm_16_autre);
      rm_17_autre = (EditText)findViewById(R.id.rm_17_autre);
      rm_18_1 = (EditText)findViewById(R.id.rm_18_1);
      rm_18_2 = (EditText)findViewById(R.id.rm_18_2);
      rm_19_5_autre = (EditText)findViewById(R.id.rm_19_5_autre);
      rm_20_5_autre = (EditText)findViewById(R.id.rm_20_5_autre);
      rm_21_5_autre = (EditText)findViewById(R.id.rm_21_5_autre);

3 个答案:

答案 0 :(得分:2)

您可以使用onSaveBundleInstance(Bundle outBundle)事件来保存您的活动状态。在您活动的onCreate中,您将获得相同的捆绑..

答案 1 :(得分:1)

这取决于您的要求,假设您想要在用户关闭应用程序时保持用户选择,并在下次返回时显示,那么最快的方式将是

- SharedPreferences,使用首选键将用户在单选框和编辑框中输入的所有值写入共享首选项(我建议使用widget ID),然后在创建时通过再次使用相同的方式读取首选项来初始化它们键。你有这样的解决方案。

否则,如果您只想保留当前会话的价值,您可以使用以下任何一种

- 使用全局数据持有者保留值,例如地图

- 使用onSaveInstanceState&生命周期中的onRestoreInstanceState回调,下面的示例代码

@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    outState.putBoolean("WIDGET ID as KEY", value); // Save you values from radio boxes here, whether they are checked or not
    outState.putString("WIDGET ID as KEY", value); // Write values from Editboxes here

    super.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onRestoreInstanceState(savedInstanceState); 

    // Read the values from bundle, through keys you used to store, and set them to corresponding widgets
}

答案 2 :(得分:0)

Activity Lifecycle

看看上面的图片。 onCreate方法只调用一次,当用户返回活动时调用onResume方法(例如,通过后退按钮)。为此,您可以使用一个变量来存储在用户选择它时检查和存储的框。然后,在onResume方法中,您可以“填充”这些框。