的onSaveInstanceState()不是从意图保存数据 [英] onSaveInstanceState() not saving data from the intent

查看:122
本文介绍了的onSaveInstanceState()不是从意图保存数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表格。在这里,用户在类似事件名称,描述,地点等细节罢了要选择的位置,我设置了一个按钮。当我按一下按钮,我被带到另一页/意图。我从中选择位置和位置数据被正确地传递回到我原来的意图。但事实是,用户填补了类似的事件,说明等其他领域的数据都将丢失。我发布<一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆