web-dev-qa-db-ja.com

フォントアセットがロリポップでhelvetica.ttfに見つかりません

Lollipopの何らかの理由で、このエラーが発生します。Lollipopは非常に新しいため、どこでその理由を見つけることができず、それを把握する方法がわかりません。 Logcatエラーを事前に感謝します。

Java.lang.RuntimeException: Unable to start activity                                       
ComponentInfo{com.bent.MissionaryTracker/com.bent.MissionaryTracker.MainActivity}:          
Java.lang.RuntimeException: Font asset not found helvetica.ttf
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2298)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2360)
at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1278)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:135)
at Android.app.ActivityThread.main(ActivityThread.Java:5221)
at Java.lang.reflect.Method.invoke(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:372)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:899)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:694)
Caused by: Java.lang.RuntimeException: Font asset not found helvetica.ttf
at Android.graphics.Typeface.createFromAsset(Typeface.Java:190)
at com.bent.MissionaryTracker.MainActivity.onCreate(MainActivity.Java:57)
at Android.app.Activity.performCreate(Activity.Java:5933)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2251)
... 10 more

編集:こちらISエラーを投げるコード

    title = (TextView) findViewById(R.id.title);


    Typeface font = Typeface.createFromAsset(getAssets(), "helvetica.ttf");
    title.setTypeface(font);

プロジェクトフォルダーのアセットフォルダーにhelvetica.ttfがあります。

編集:このアプリは5.0までのすべてのデバイスで動作するため、何らかの理由で5.0が私の資産フォルダ内のファイルを認識しません。

アセットフォルダにスクリーンショットを投稿しようとしましたが、画像を投稿するほどの評判はありません。

37
Sloganho

Android Studioで作業している場合は、アセットフォルダがメインではなくresではないことを確認してくださいこれは私のために働いた

75
Sagar Devanga

これで、カスタムフォントに使用する方が適切になりました このアプローチ

フォントをres/fontに保存する

書体を使用するには:

Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
37
Penzzz

.otfファイルの前に "fonts /"を配置しないことに気付く前に、この問題もありました。

 Typeface font = Typeface.createFromAsset(getAssets(),"fonts/TTMastersDEMOBlack.ttf");
30
keredniy

これは私のために働いた。私の場合、mainではなくresでassetsフォルダーを作成したため、機能しませんでした。

enter image description here

16
Jorge Casariego

ディレクトリの変更が機能しない場合は、Androidチームによってすでに修正されているが、5.0に間に合わなかった問題が原因である可能性があります。すべてここで説明します。

https://code.google.com/p/Android-developer-preview/issues/detail?id=608&thanks=608&ts=1404735239

回避策(少なくとも私にとっては)は、リンクされた問題で述べたように、TTXでフォントファイルを修正することです。

python専門知識がないのでTTXを動作させるのは少し面倒なことがあるので、ダウンロードすることになりました AdobeのAFDKO TTXが含まれています。'ttxを実行する必要がありますyourfontfile.ttf 'yourfileを.ttxに変換してから、再度' ttx yourfontfile.ttx 'を実行して、5.0で動作する新しい.ttfを取得します。

8
Nublodeveloper

メインフォルダー内にアセットフォルダーを配置するだけです。これを行った後:

 Typeface typeface=Typeface.createFromAsset(getAssets(),"OpenSans-Light.ttf");
    textView.setTypeface(typeface);
5
Aman Goel

プロジェクトをきれいにして、Android 6.0

5
keybee

前にこの問題に直面しました。 x.ttfを削除してから削除を元に戻し、ロックなしで実行しようとしました。だから私の修正は、それを削除してフォントを再度ダウンロードし、fonts /フォルダに貼り付けるだけで、すべてがうまくいきました。

4
Leebeedev

わかりました

私は同じ問題に遭遇しました。まず、フォントのロードロジックのクラッシュを防ぎます。

/**
 * Init method. This method must be called before any other call in this class.
 */
public static void init () {
    fontPlain  = createFont( "helvetica.ttf" , Typeface.NORMAL );
    fontBold   = createFont( "helveticab.ttf", Typeface.BOLD   );
}

/**
 * Load font from assets font folder.
 */
public static Typeface createFont (String font, int style) {
    Typeface typeface;
    try {
        AssetManager assets = Kit.getAppContext().getAssets();
        typeface = Typeface.createFromAsset( assets, "fonts" + File.separator + font );
    }
    catch (RuntimeException e) {
        // createFromAsset() will throw a RuntimeException in case of error.
        Log.e( Constants.TAG, "Unable to create font: " + font, e );
        typeface = Typeface.defaultFromStyle( style );
    }
    return typeface;
}

そして、このプロジェクトから別のフォントもgitでダウンロードしました。

https://github.com/dimanchec3/Tutoriapps-Android/blob/master/assets/Helvetica.ttf

私の古いフォントは56KBで、この新しいフォントは84KBであることに気付きました。フォントの古いバージョンがあったと思います。

このフォントを使用する前に、適切なライセンスを持っていることを確認してください。

2
Sileria