在我ViewPager
我有一些片段,我动态更改了一些TextView
文本,在TextView
s的页面文本之间切换后,我无法保存和恢复他们来自instance
这是我的代码而且无法正常工作
private String value1;
private String value2;
private String value3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//@formatter:off
context = getActivity().getBaseContext();
activity = getActivity();
//@formatter:on
}
@Override
public void onViewStateRestored(@Nullable Bundle inState) {
super.onViewStateRestored(inState);
if (inState != null) {
inState.getString("value1", value1);
inState.getString("value2", value2);
inState.getString("value3", value3);
sahmiyeh_value_1.setText(value1);
sahmiyeh_value_2.setText(value2);
sahmiyeh_value_3.setText(value3);
}
}
@Override
public void onSaveInstanceState(@Nullable Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("value1", sahmiyeh_value_1.getText().toString());
outState.putString("value2", sahmiyeh_value_2.getText().toString());
outState.putString("value3", sahmiyeh_value_3.getText().toString());
}
答案 0 :(得分:2)
您没有声明字符串值。
value1, value2, value3
为空。这就是为什么TextView或EditText没有任何价值。
@Override
public void onViewStateRestored(@Nullable Bundle inState) {
super.onViewStateRestored(inState);
if (inState != null) {
value1 = inState.getString("value1");
value2 = inState.getString("value2");
value3 = inState.getString("value3");
sahmiyeh_value_1.setText(value1);
sahmiyeh_value_2.setText(value2);
sahmiyeh_value_3.setText(value3);
}
}
或者你可以这样做。
sahmiyeh_value_1.setText(inState.getString("value1"));
sahmiyeh_value_2.setText(inState.getString("value2"));
sahmiyeh_value_3.setText(inState.getString("value3"));
答案 1 :(得分:2)
您可以尝试freezesText
<TextView
...
android:freezesText="true" />
来自文档:
如果设置,除了元数据(如当前光标位置)之外,文本视图还将在其冻结冰柱内包含其当前完整文本。默认情况下,这是禁用的;当文本视图的内容未存储在诸如内容提供者
之类的持久位置时,它会很有用