Java 更改textview字体时应用程序崩溃

Java 更改textview字体时应用程序崩溃,java,android,eclipse,Java,Android,Eclipse,我试图通过编程更改textView的字体,但我的应用程序不断崩溃。我就是这样做的: //SET CUSTOM FONT FOR TIMER String fontPath = "fonts/voice_notepad_font.ttf"; TextView timer = (TextView)findViewById(R.id.timer); Typeface tf = Typeface.createFromAsset(getAssets(), fontPath);

我试图通过编程更改textView的字体,但我的应用程序不断崩溃。我就是这样做的:

//SET CUSTOM FONT FOR TIMER
    String fontPath = "fonts/voice_notepad_font.ttf";
    TextView timer = (TextView)findViewById(R.id.timer);
    Typeface tf = Typeface.createFromAsset(getAssets(), fontPath);
    timer.setTypeface(tf);

日志:

08-13 23:36:44.079: E/AndroidRuntime(11027): FATAL EXCEPTION: main
08-13 23:36:44.079: E/AndroidRuntime(11027): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.whizzappseasyvoicenotepad/com.whizzappseasyvoicenotepad.TabLayout}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.whizzappseasyvoicenotepad/com.whizzappseasyvoicenotepad.MainActivity}: java.lang.RuntimeException: native typeface cannot be made
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.os.Looper.loop(Looper.java:137)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread.main(ActivityThread.java:5103)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at java.lang.reflect.Method.invokeNative(Native Method)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at java.lang.reflect.Method.invoke(Method.java:525)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at dalvik.system.NativeStart.main(Native Method)
08-13 23:36:44.079: E/AndroidRuntime(11027): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.whizzappseasyvoicenotepad/com.whizzappseasyvoicenotepad.MainActivity}: java.lang.RuntimeException: native typeface cannot be made
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread.startActivityNow(ActivityThread.java:2054)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:749)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.widget.TabHost.setCurrentTab(TabHost.java:413)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.widget.TabHost.addTab(TabHost.java:240)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at com.whizzappseasyvoicenotepad.TabLayout.onCreate(TabLayout.java:33)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.Activity.performCreate(Activity.java:5133)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
08-13 23:36:44.079: E/AndroidRuntime(11027):    ... 11 more
08-13 23:36:44.079: E/AndroidRuntime(11027): Caused by: java.lang.RuntimeException: native typeface cannot be made
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.graphics.Typeface.<init>    (Typeface.java:175)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.graphics.Typeface.createFromAsset(Typeface.java:149)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at com.whizzappseasyvoicenotepad.MainActivity.onCreate(MainActivity.java:59)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.Activity.performCreate(Activity.java:5133)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-13 23:36:44.079: E/AndroidRuntime(11027):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
08-13 23:36:44.079: E/AndroidRuntime(11027):    ... 21 more
08-13 23:36:44.079:E/AndroidRuntime(11027):致命异常:主
2008-13 23:36:44.079:E/AndroidRuntime(11027):java.lang.RuntimeException:无法启动活动组件信息{com.whizzappseasyvoiceNodePad/com.whizzappseasyvoiceNodePad.TabLayout}:java.lang.RuntimeException:无法启动活动组件信息{com.whizzappseasyvoiceNodePad/com.whizzappseasyvoiceNodePad.MainActivity}:java.lang.RuntimeException:无法创建本机字体
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread.access$600(ActivityThread.java:141)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.os.Handler.dispatchMessage(Handler.java:99)上
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.os.Looper.loop(Looper.java:137)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread.main(ActivityThread.java:5103)上
08-13 23:36:44.079:E/AndroidRuntime(11027):位于java.lang.reflect.Method.Invokenactive(本机方法)
08-13 23:36:44.079:E/AndroidRuntime(11027):位于java.lang.reflect.Method.invoke(Method.java:525)
08-13 23:36:44.079:E/AndroidRuntime(11027):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-13 23:36:44.079:E/AndroidRuntime(11027):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
8-13 23:36:44.079:E/AndroidRuntime(11027):在dalvik.system.NativeStart.main(本机方法)
08-13 23:36:44.079:E/AndroidRuntime(11027):原因:java.lang.RuntimeException:无法启动活动组件信息{com.whizzappseasyVoiceNodePad/com.whizzappseasyVoiceNodePad.MainActivity}:java.lang.RuntimeException:无法生成本机字体
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread.startActivityNow(ActivityThread.java:2054)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
08-13 23:36:44.079:E/AndroidRuntime(11027):位于android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:749)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.widget.TabHost.setCurrentTab(TabHost.java:413)
08-13 23:36:44.079:E/AndroidRuntime(11027):位于android.widget.TabHost.addTab(TabHost.java:240)
08-13 23:36:44.079:E/AndroidRuntime(11027):在com.whizzappseasyvoicenotepad.TabLayout.onCreate(TabLayout.java:33)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.Activity.performCreate(Activity.java:5133)上
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)上
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
8-13 23:36:44.079:E/AndroidRuntime(11027):。。。还有11个
08-13 23:36:44.079:E/AndroidRuntime(11027):原因:java.lang.RuntimeException:无法生成本机字体
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.graphics.Typeface。(Typeface.java:175)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.graphics.Typeface.createFromAsset(Typeface.java:149)上
08-13 23:36:44.079:E/AndroidRuntime(11027):在com.whizzappseasyvoiceNodePad.MainActivity.onCreate(MainActivity.java:59)
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.Activity.performCreate(Activity.java:5133)上
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)上
08-13 23:36:44.079:E/AndroidRuntime(11027):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
08-13 23:36:44.079:E/AndroidRuntime(11027):。。。还有21个

我将自定义字体添加到assets/fonts文件夹,并将其重命名为“voice\u notepad\u font”

刚刚发现问题!我不知道为什么,但是.ttf是大写的(voice\u notepad\u font.ttf),这就是它崩溃的原因

我刚刚将字符串fontPath更改为:

String fontPath = "fonts/voice_notepad_font.TTF"
现在它工作得很好


老实说,这以前从未发生过,每次我下载自定义字体时,.ttf都是小写的。这就是为什么我不知道我做错了什么。

字体真的在字体文件夹(在资产文件夹内)中吗?刚刚发现问题,如果你感兴趣,请稍后检查我的答案:)Android使用区分大小写的Linux,因此你的应用程序崩溃,因为系统找不到你指定的字体文件。