【问题标题】:could not be able to save date during switching between activities在活动之间切换时无法保存日期
【发布时间】:2013-02-21 04:16:36
【问题描述】:

我的应用程序中有两个活动现在我想保存 editText 的文本,当用户转到下一个时,这是由用户给出的,在返回 MainActivity 后,该值应该放在 editText 我的代码是

public class MainActivity extends Activity {

EditText editText;
String name = null;

@Override
protected void onCreate(Bundle savedInstanceState) {        
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText = (EditText) findViewById(R.id.editText1);
    if(savedInstanceState == null){
    editText.setText("Some Thing");
    }else{
        String newValue = savedInstanceState.getString("myData");
        editText.setText(newValue);
    }
    Log.d("ARSHAY....", "in onCreate()");
}

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    // TODO Auto-generated method stub

    super.onSaveInstanceState(savedInstanceState);
    editText = (EditText) findViewById(R.id.editText1);
    name = editText.getText().toString();
    savedInstanceState.putString("myData", name);

}


public void goToNextArsh(View view ) {


    Intent intent = new Intent(MainActivity.this, Second.class);
    startActivity(intent);
}
  }

但这不会在返回 MainActivity 时设置新输入。 有没有人知道怎么做?

【问题讨论】:

  • 使用SharedPreference。这是example
  • 第一!感谢你们俩。我已经尝试了所有这些方法,我在 onPasue() 方法中获得了像 getPreferences(MODE_PRIVATE).edit().putString("som.arshay.retreive.data", editText.getText().toString()).commit(); 这样的 editText 的值,并像 String newValue = getPreferences(MODE_PRIVATE).getString("som.arshay.retreive.data", editText.getText().toString()); editText.setText(newValue); 那样获得了值。但我仍然无法达到我想要的结果......

标签: android saving-data


【解决方案1】:

首先你为什么要使用editText = (EditText) findViewById(R.id.editText1); 两次。 仅用于onCreate()

并使用此代码

@Override
protected void onPause() {
    SharedPreferences pref = getSharedPreferences("YOUR_KEY", MODE_PRIVATE);
    Editor edit = pref.edit();
    edit.putString("som.arshay.retreive.data", editText.getText().toString());
    edit.commit();
    super.onPause();
}

@Override
protected void onResume() {
    SharedPreferences pref = getSharedPreferences("YOUR_KEY", MODE_PRIVATE);
    String newValue = pref.getString("som.arshay.retreive.data", "");
    editText.setText(newValue);
    super.onResume();
}

【讨论】:

  • 好的!这行得通,但是这段代码中仍然存在一个错误,即我无法在editText 中看到我在第一次启动时在onCreate() 中设置的值。请提出一些解决方案。
【解决方案2】:

使用这些方法onSaveInstanceState(Bundle outState)onRestoreInstanceState(Bundle savedInstanceState)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多