添加字体会崩溃我的应用

时间:2013-11-17 09:17:53

标签: android fonts crash runtime-error typeface

我尝试在我的应用程序中添加字体,但每次我的应用程序崩溃时。

我的字体是在assets\font文件夹中正确插入的.ttf。

我的Java代码是:

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView myTextView1=(TextView)findViewById(R.id.textBox1);
       // Typeface typeFace= Typeface.createFromAsset(getAssets(), "fonts/Intellecta_Digital.ttf");
        Typeface typeFace1= Typeface.SERIF;
        myTextView1.setTypeface(typeFace1);

        TextView myTextView2=(TextView)findViewById(R.id.textBox2);
        Typeface typeFace2= Typeface.DEFAULT_BOLD;
        myTextView2.setTypeface(typeFace2);

        TextView myTextView3=(TextView)findViewById(R.id.textBox3);
        Typeface typeFace3= Typeface.MONOSPACE;
        myTextView3.setTypeface(typeFace3);

        TextView myTextView4=(TextView)findViewById(R.id.textBox4);
        AssetManager mngr =getAssets();
        Typeface typeFace4= Typeface.createFromAsset(mngr, "fonts/font_example.ttf");
        myTextView4.setTypeface(typeFace4);
    }
}

我的XML是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="MergeRootFrame"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="Font Typeface"
        android:id="@+id/textBoxStandard" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="Font Typeface"
        android:id="@+id/textBox1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="Font Typeface"
        android:id="@+id/textBox2" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="Font Typeface"
        android:id="@+id/textBox3" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="Font Typeface"
        android:id="@+id/textBox4" />
</LinearLayout>

这是我的LogCat:

11-17 09:58:20.940    2593-2593/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{it.co.matteopellegrini.android.fontapp/it.co.matteopellegrini.android.fontapp.MainActivity}: java.lang.RuntimeException: native typeface cannot be made
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.RuntimeException: native typeface cannot be made
            at android.graphics.Typeface.<init>(Typeface.java:147)
            at android.graphics.Typeface.createFromAsset(Typeface.java:121)
            at it.co.matteopellegrini.android.fontapp.MainActivity.onCreate(MainActivity.java:31)
            at android.app.Activity.performCreate(Activity.java:4470)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
            at dalvik.system.NativeStart.main(Native Method)

我尝试了很多次,更改了字体,更改了Java代码,但我没有解决方案。

!!!!!!!!!!!我发现这只是因为我使用Android工作室的应用程序!!!!!!!!!!!

!!!!!!!!!!!如果我使用ECLIPSE它工作!!!!!!!!!!!

3 个答案:

答案 0 :(得分:0)

您的字体文件已损坏或不受支持。您可以将它放在SD卡上并从文件中加载它,以确保它不会对您的资产造成问题。

仔细检查文件的扩展名是否为大写字母,例如: - example_font.TTF 字体经常出现这种情况,可能会被忽视。

请看这个问题: - https://code.google.com/p/android/issues/detail?id=9904

从资产文件夹加载字体时,android中存在一些错误。试试上面的解决方案。它会起作用

答案 1 :(得分:0)

对不起, 我的错误是字体文件夹是字体,但我创建字体

答案 2 :(得分:0)

你的问题是/font_example.ttf“);可能从window fonts文件夹中复制你的字体而.TTF是大写的你应该把它改成font_example.TTF