私の開始アクティビティでは、FontFactory.init(getApplicationContext());
Context を FontFactory クラスに設定するために呼び出します。
拡張するクラスもありTextView
、この TextView のコンストラクターには がありsetTypeface(FontFactory.Fonts.ROBOTO_LIGHT.getFont());
ます。そのため、ファイルからのフォントは、起動時ではなく、最初に必要になったときに読み込まれます。
問題は、起動エラーが発生してアプリケーションがクラッシュするたびにではなく、ときどきのみ発生することです。
InflateException: バイナリ XML ファイル行 .. - クラス LayoutWithExtendedTextView の膨張エラー
Typeface nativeCreateFromAsset、createFRomAsset、および FontFactory.loadFont(FontFactory.java:46) の NullPointerException が原因です。
46行目はreturn Typeface.createFromAsset(assetManager, fontEnum.getPath());
私の FontFactory クラス:
public final class FontFactory {
public enum Fonts {
ROBOTO_CONDENSED("fonts/Roboto-Condensed.ttf"), ROBOTO_LIGHT(
"fonts/Roboto-Light.ttf"), ROBOTO_MEDIUM(
"fonts/Roboto-Medium.ttf"), ROBOTO_REGULAR(
"fonts/Roboto-Regular.ttf");
private String path;
private Typeface loadedFont = null;
private Fonts(String path) {
this.path = path;
}
public String getPath() {
return path;
}
public void setLoadedFont(Typeface font) {
this.loadedFont = font;
}
public Typeface getFont() {
if (loadedFont == null) {
this.loadedFont = FontFactory.loadFont(this);
}
return loadedFont;
}
}
private static final String TAG = "FontFactory";
private static AssetManager assetManager;
public static void init(Context context) {
assetManager = context.getAssets();
}
private static Typeface loadFont(FontFactory.Fonts fontEnum) {
return Typeface.createFromAsset(assetManager, fontEnum.getPath());
}
}
アセットの読み込みに遅延はありますか?
ありがとうございました。