如果使用自定义textview,Viewpager不会保存片段状态

时间:2017-04-04 08:45:38

标签: android

如果片段包含设置了自定义字体的textview,则Viewpager不会保存片段状态。我该如何防止这种情况?

public class SansFontTextView extends TextView {
public SansFontTextView(Context context) {
    super(context);
    setUpTypeFace();
}

public SansFontTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setUpTypeFace();
}

public SansFontTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    setUpTypeFace();
}

private void setUpTypeFace(){

    Typeface openSansBold = Typeface.createFromAsset(getContext().getAssets(),  "fonts/OpenSans-Bold.ttf");

    setTypeface(openSansBold);
}
}

1 个答案:

答案 0 :(得分:0)

当系统保存其状态时,您尚未指示如何处理自定义组件,即您尚未在onSavedInstanceState()中指定要保存的内容以及onRestoreInstanceState()中要还原的内容。< / p>

如果您的自定义视图要保存该信息,则应覆盖这些回调以便在销毁时继续存在。否则,您的自定义TextView将保存为普通TextView(即只会调用super.onSavedInstanceState()),您在自定义类中定义的属性将会丢失。

了解如何执行此操作in this answer