使用getAssets()时Android程序崩溃

时间:2011-03-08 03:45:05

标签: android android-activity nullpointerexception assets typeface

我有一个扩展活动的MyActivity类。这个类本质上只是为了保存一些我需要的额外方法,它还包含我将用于整个应用程序的字体。因此,例如,我有一个扩展MyActivity的活动“HomeScreen”。但是,当我尝试使用:

实例化字体时
    lavi = Typeface.createFromAsset(getAssets(), "fonts/Lavi.ttf");

程序崩溃是由于nullAsinter似乎在getAssets()方法中发生的。有谁知道为什么会这样,以及如何解决这个问题?

编辑: logcat的:

03-07 23:47:16.389:ERROR / AndroidRuntime(9432):致命异常:主要 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):java.lang.RuntimeException:无法实例化活动ComponentInfo {android.PhysicsEngine4 / android.PhysicsEngine4.HomeScreen}:java.lang.NullPointerException 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.app.ActivityThread.access $ 2300(ActivityThread.java:125) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.os.Handler.dispatchMessage(Handler.java:99) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.os.Looper.loop(Looper.java:123) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.app.ActivityThread.main(ActivityThread.java:4627) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):at java.lang.reflect.Method.invokeNative(Native Method) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):at java.lang.reflect.Method.invoke(Method.java:521) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):at dalvik.system.NativeStart.main(Native Method) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):引起:java.lang.NullPointerException 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.content.ContextWrapper.getAssets(ContextWrapper.java:74) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.PhysicsEngine4.MyActivity。(MyActivity.java:19) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.PhysicsEngine4.HomeScreen。(HomeScreen.java:12) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):at java.lang.Class.newInstanceImpl(Native Method) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):at java.lang.Class.newInstance(Class.java:1429) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.app.Instrumentation.newActivity(Instrumentation.java:1021) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 03-07 23:47:16.389:ERROR / AndroidRuntime(9432):... 11更多

2 个答案:

答案 0 :(得分:0)

HI,

检查字体名称大小写(大写字符)Lavi.ttf或lavi.ttf,并尝试在资源文件夹中使用相同的代码。

答案 1 :(得分:0)

我认为您在模块的AndroidManifest.xml文件和项目的AndroidManifest.xml中使用了冲突的Android API。如果你有模块中的文件,请确保它们保持不变。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mrwujay.cascade"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="23" />
    <application/>
</manifest>