我的应用程序中有一个登录活动,它有一个使用片段管理器在其上添加片段的方法。我在片段中有两个EditText字段(名称和密码)。
但是,当我更改设备上的方向时,将删除EditText字段中写入的文本。两个EditText字段在XML文件中被赋予两个唯一的ID(通常有助于在方向改变时保存其中的信息)但是当方向改变时它们内部的值不被保留。在这种情况下,如何保留EditText字段内的值?
答案 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);
}
}