在来到这里之前我做了很多试验,我需要该用户找到在
中输入的相同值当他回来时的一项活动,我做了这段代码,但它不起作用:
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);
}
});
答案 0 :(得分:1)
为简单起见,您可以将值存储在SharedPreferences
。
getSharedPreferences().edit().putString("myEditText", yourValue).commit();
就是这样。
答案 1 :(得分:1)
问题是onSaveInstanceState
仅在您通过系统杀死Activity
以释放内存或第三方应用时调用。但是当您按下Activity
中的后退按钮时,它只相当于finish()
。在这种情况下,不会调用onSaveInstanceState
。因此,如果您想在每次创建Activity
时存储数据,只需将值存储在SharedPreference
中。您可以根据需要以onStop
或onPause
方式存储值。
Here您可以了解有关SharedPrefence和其他类型存储选项的更多信息。
答案 2 :(得分:0)
尝试在onStart或onResume而不是onCreate中恢复状态。只有在活动被销毁后需要重新创建活动时,才会调用onCreate。通常,活动将在后台保留在停止状态,并且在返回时不会调用onCreate。
文件中的任何位置,放置:
@Override
public void onResume() {
super.onResume();
//Your code here
}