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が私の資産フォルダ内のファイルを認識しません。
アセットフォルダにスクリーンショットを投稿しようとしましたが、画像を投稿するほどの評判はありません。
Android Studioで作業している場合は、アセットフォルダがメインではなくresではないことを確認してくださいこれは私のために働いた
これで、カスタムフォントに使用する方が適切になりました このアプローチ
フォントをres/fontに保存する
書体を使用するには:
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
.otfファイルの前に "fonts /"を配置しないことに気付く前に、この問題もありました。
Typeface font = Typeface.createFromAsset(getAssets(),"fonts/TTMastersDEMOBlack.ttf");
これは私のために働いた。私の場合、mainではなくresでassetsフォルダーを作成したため、機能しませんでした。
ディレクトリの変更が機能しない場合は、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を取得します。
メインフォルダー内にアセットフォルダーを配置するだけです。これを行った後:
Typeface typeface=Typeface.createFromAsset(getAssets(),"OpenSans-Light.ttf");
textView.setTypeface(typeface);
プロジェクトをきれいにして、Android 6.0
前にこの問題に直面しました。 x.ttfを削除してから削除を元に戻し、ロックなしで実行しようとしました。だから私の修正は、それを削除してフォントを再度ダウンロードし、fonts /フォルダに貼り付けるだけで、すべてがうまくいきました。
わかりました
私は同じ問題に遭遇しました。まず、フォントのロードロジックのクラッシュを防ぎます。
/**
* 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であることに気付きました。フォントの古いバージョンがあったと思います。
このフォントを使用する前に、適切なライセンスを持っていることを確認してください。