2017-04-04 75 views
0

如果片段包含具有自定义字体的文本视图,Viewpager不会保存其片段状态。我如何防止这种情况?如果使用自定义文本视图,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

你使用过'viewpager.setOffscreenPageLimit(int limit)'吗? –

+0

你可以发布你的代码吗? – AbhayBohra

+0

我做过了,textview用于xml – user6650650

回答

0

您还没有指示做什么用你的自定义组件,当系统保存它们的状态,也就是说,您未指定想要在onSavedInstanceState()保存和onRestoreInstanceState()什么来恢复。

如果您的自定义视图想要保存该信息,它应该重写这些回调以保证其可以销毁。否则,您的自定义TextView将被保存为普通TextView(即只会调用super.onSavedInstanceState()),并且您在自定义类中定义的属性将会丢失。

看怎么做in this answer

相关问题