Android保存并恢复TextView文本ViewPager片段

时间:2017-02-01 07:49:33

标签: android android-fragments

在我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());
}

2 个答案:

答案 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" />

来自文档:

  

如果设置,除了元数据(如当前光标位置)之外,文本视图还将在其冻结冰柱内包含其当前完整文本。默认情况下,这是禁用的;当文本视图的内容未存储在诸如内容提供者

之类的持久位置时,它会很有用