2015-03-08 55 views
-1

字體我有2類1號一個叫Font.java,它有下面的代碼的Android如何從

package com.example.font; 

    package com.example.font; 

    import android.content.Context; 
    import android.graphics.Typeface; 

    public final class Font { 
     static Context context; 

     // Font path 
     static String fontPath = "fonts/font.ttf"; 
     // Loading Font Face 
     static Typeface tf = Typeface.createFromAsset(context.getAssets(), fontPath); 
    } 

和第二類的活動,它具有以下

 package com.example.font; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.widget.TextView; 

    public class AndroidExternalFontsActivity extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      // text view label 
      TextView txtGhost = (TextView) findViewById(R.id.ghost); 


      // Applying font 
      txtGhost.setTypeface(Font.tf); 
     } 
    } 

我想設置這在Font.java類到在活動類TextView的字體。

我想上面的代碼,但它不工作 我該怎麼辦呢?

謝謝。

回答

0

你的字體類是錯誤的。您的上下文變量從未分配,因此在

context.getAssets() 

您將有一個NullPointerException。

另外,請考慮上下文從未使用靜態引用,因爲是有據可查的內存泄漏源,你可以檢查,例如,here

我建議您修改字體類類似的東西於:

package com.example.font; 

    package com.example.font; 

    import android.content.Context; 
    import android.graphics.Typeface; 

    public final class Font { 
     private static final String fontPath = "fonts/font.ttf"; 

     public Typeface getFont(Context context) { 
      return Typeface.createFromAsset(context.getAssets(), fontPath); 

     } 
    } 

而且你的活動將是這樣的:

public class AndroidExternalFontsActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     // text view label 
     TextView txtGhost = (TextView) findViewById(R.id.ghost); 


     // Applying font 
     txtGhost.setTypeface(Font.getFont(this)); 
    } 
} 

此外,也許this答案可以幫助你。

+0

THX的答案,但我怎麼可以設置後,該活動的字體? – user3707644 2015-03-08 23:07:01