如果片段包含设置了自定义字体的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);
}
}
答案 0 :(得分:0)
当系统保存其状态时,您尚未指示如何处理自定义组件,即您尚未在onSavedInstanceState()
中指定要保存的内容以及onRestoreInstanceState()
中要还原的内容。< / p>
如果您的自定义视图要保存该信息,则应覆盖这些回调以便在销毁时继续存在。否则,您的自定义TextView
将保存为普通TextView
(即只会调用super.onSavedInstanceState()
),您在自定义类中定义的属性将会丢失。
了解如何执行此操作in this answer。