在android中编辑文本保存状态

时间:2013-12-12 18:26:56

标签: android

在来到这里之前我做了很多试验,我需要该用户找到在

中输入的相同值

当他回来时的一项活动,我做了这段代码,但它不起作用:

             public class ActivityUn extends Activity {
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putString("arm_1", rm_1ts);
    savedInstanceState.putString("arm_2", rm_2ts);
    super.onSaveInstanceState(savedInstanceState);
}
    public void  ajouter(View v) {
           db.open();
               long id =  db.insertMENAGE(rm_1ts,rm_2ts); }
 EditText  rm_1;
EditText  rm_2;
 String rm_1ts = "";
 String rm_2ts = "";
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_un);

            rm_1 = (EditText)findViewById(R.id.rm_1);
    rm_2 = (EditText)findViewById(R.id.rm_2);
     if (savedInstanceState != null) {
            // Restore value of members from saved state
            rm_1ts = savedInstanceState.getString("arm_1");
            rm_2ts = savedInstanceState.getString("arm_2");
            rm_1.setText(rm_1ts);
            rm_2.setText(rm_2ts);
        }
         Button bton = (Button)findViewById(R.id.ajoutUn);
         bton.setOnClickListener(new View.OnClickListener() {  
               @Override
          public void onClick(View v) {
                  rm_1ts = rm_1.getText().toString();
                  rm_2ts = rm_2.getText().toString();
             ajouter(v);

             }
          });

3 个答案:

答案 0 :(得分:1)

为简单起见,您可以将值存储在SharedPreferences

getSharedPreferences().edit().putString("myEditText", yourValue).commit();

就是这样。

答案 1 :(得分:1)

问题是onSaveInstanceState仅在您通过系统杀死Activity以释放内存或第三方应用时调用。但是当您按下Activity中的后退按钮时,它只相当于finish()。在这种情况下,不会调用onSaveInstanceState。因此,如果您想在每次创建Activity时存储数据,只需将值存储在SharedPreference中。您可以根据需要以onStoponPause方式存储值。

Here您可以了解有关SharedPrefence和其他类型存储选项的更多信息。

答案 2 :(得分:0)

尝试在onStart或onResume而不是onCreate中恢复状态。只有在活动被销毁后需要重新创建活动时,才会调用onCreate。通常,活动将在后台保留在停止状态,并且在返回时不会调用onCreate。

文件中的任何位置,放置:

@Override
public void onResume() {
    super.onResume();
    //Your code here
}