在活动和片段之间保存数据

时间:2017-10-23 14:38:24

标签: android android-fragments

我的应用程序中有一个登录活动,它有一个使用片段管理器在其上添加片段的方法。我在片段中有两个EditText字段(名称和密码)。

但是,当我更改设备上的方向时,将删除EditText字段中写入的文本。两个EditText字段在XML文件中被赋予两个唯一的ID(通常有助于在方向改变时保存其中的信息)但是当方向改变时它们内部的值不被保留。在这种情况下,如何保留EditText字段内的值?

1 个答案:

答案 0 :(得分:0)

在Stackoverflow上有很多关于同一问题的链接,请检查它。

但你的回答是:

在Fragment类中,你有onSaveInstanceState方法,在你的片段中覆盖它,并把(putString)放在你想要保存的变量的bundle(来自方法params)中,在这种情况下你的文本写在你的edittexts中。

稍后在onActivityCreated中获取值并在EditTexts中设置它们。

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("name", etName.getText().toString());
    outState.putString("password", etPassword.getText().toString());
}


@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        String name = savedInstanceState.getString("name", "");
        String pass = savedInstanceState.getString("password", "");
        etName.setText(name);
        etPassword.setText(pass);
    }
}