2017-04-04 86 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

相關問題