的onSaveInstanceState()不是从意图保存数据 [英] onSaveInstanceState() not saving data from the intent
问题描述
我有一个表格。在这里,用户在类似事件名称,描述,地点等细节罢了要选择的位置,我设置了一个按钮。当我按一下按钮,我被带到另一页/意图。我从中选择位置和位置数据被正确地传递回到我原来的意图。但事实是,用户填补了类似的事件,说明等其他领域的数据都将丢失。我发布<一个href=\"http://stackoverflow.com/questions/30189773/going-back-and-forth-between-intents-without-losing-user-entered-data\">this问题之前,想那些的。我提到这的太多,并使用的onSaveInstanceState
是这样的:
I have a form. Here, the user fills in details like event name, description, location etc. To select the location, I have set a button. When I click on the button, I am taken to another page/intent. I select the location from there, and the location data is passed back to my original intent correctly. But the thing is, the data in the other fields like event, description etc. that users filled in are lost. I posted this question before and tried those out. I referred to this too and tried using onSaveInstanceState
like this:
private static final String ENAME = "ENAME";
private static final String DESC = "DESC";
private static final String SDATE = "SDATE";
private static final String EDATE = "EDATE";
private static final String STIME = "STIME";
private static final String ETIME = "ETIME";
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
final String name = etename.getText().toString();
savedInstanceState.putString(ENAME, name);
final String des = etdes.getText().toString();
savedInstanceState.putString(DESC, des);
final String sdt = StartDate.getText().toString();
savedInstanceState.putString(SDATE, sdt);
final String edt = EndDate.getText().toString();
savedInstanceState.putString(EDATE, edt);
final String stm = StartTime.getText().toString();
savedInstanceState.putString(STIME, stm);
final String etm = EndTime.getText().toString();
savedInstanceState.putString(ETIME, etm);
// Put (save) other values into the outState bundle...
super.onSaveInstanceState(savedInstanceState);
}
我以前该功能的的onCreate()
;这里是我的onCreate();
I have that function before the onCreate()
; And here is my onCreate();
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.eventcreaten);
etename = (EditText) findViewById(R.id.etename);
etdes = (EditText) findViewById(R.id.etdes);
StartDate = (EditText) findViewById(R.id.etstartdate1);
EndDate = (EditText) findViewById(R.id.etenddate1);
btnCreateEvent = (Button) findViewById(R.id.btncreate);
tvd2 = (TextView) findViewById (R.id.tvd2);
tved2 = (TextView) findViewById (R.id.tved2);
tvg = (TextView) findViewById (R.id.tvg);
StartTime = (EditText) findViewById (R.id.etstartt1);
EndTime = (EditText) findViewById (R.id.etendt1);
if (savedInstanceState != null) {
final String name = savedInstanceState.getString(ENAME, "");
etename.setText(name);
final String des = savedInstanceState.getString(DESC, "");
etdes.setText(des);
final String sdt = savedInstanceState.getString(SDATE, "");
StartDate.setText(sdt);
final String edt = savedInstanceState.getString(EDATE, "");
EndDate.setText(edt);
final String stm = savedInstanceState.getString(STIME, "");
StartTime.setText(stm);
final String etm = savedInstanceState.getString(ETIME, "");
EndTime.setText(etm);
} else {
// No saved values to restore
}
和它不工作。可有人请指出为什么?
And it doesn't work. Can someone please point out why?
推荐答案
不知道,如果你得到它的工作与否。但我得到了它的这项工作。
Not sure if you got it to work or not. But I got it to work with this.
public class TestingForSO extends ActionBarActivity {
private static final String ENAME = "ENAME";
EditText etename;
String name = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testing_for_so);
if (savedInstanceState != null) {
name = savedInstanceState.getString(ENAME, "");
Log.e("NAME", "saved");
} else{
Log.e("NAME", "not_saved");
}
etename = (EditText) findViewById(R.id.etename);
etename.setText(name);
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Log.e("NAME", "Saving");
savedInstanceState.putString(ENAME, etename.getText().toString());
}
}
这篇关于的onSaveInstanceState()不是从意图保存数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!