【发布时间】:2015-05-23 18:23:23
【问题描述】:
我有一个表格。在这里,用户填写事件名称、描述、位置等详细信息。要选择位置,我设置了一个按钮。当我点击按钮时,我被带到另一个页面/意图。我从那里选择位置,并将位置数据正确地传递回我的原始意图。但问题是,用户填写的其他字段(如事件、描述等)中的数据会丢失。我之前发布了this 问题并尝试了这些问题。我也提到了this,并尝试像这样使用onSaveInstanceState:
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();
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
}
而且它不起作用。有人能指出原因吗?
【问题讨论】:
-
你的activity是直接扩展Activity类还是有链?
-
@ruan65 是的,它扩展了 Activity
-
您确定在您从其他活动返回时会调用
onCreate()吗?此 Activity 可能不会被销毁,在这种情况下,onCreate()将不会被再次调用。 -
@DanielNugent,嗯,是的,很好的观察。但如果不销毁,为什么不保留之前的数据呢?
-
@YohanBlake 很难说。你现在是用
startActivityForResult()打开Map2.class吗?
标签: java android android-intent