使用getAssets时Android程序崩溃()

问题描述:

我有一个MyActivity类,它扩展了活动。这个类本质上只是用来存放我需要的一些额外的方法,它也包含我将用于整个应用程序的字体。所以,举个例子,我有一个扩展MyActivity的活动“HomeScreen”。然而,当我尝试实例使用的字体:使用getAssets时Android程序崩溃()

lavi = Typeface.createFromAsset(getAssets(), "fonts/Lavi.ttf"); 

的程序崩溃是由于这似乎在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):at android.app。 ActivityThread.performLaunchActivity(ActivityThread.java:2585) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 03-07 23:47: 16.389:错误/ AndroidRuntime(9432): at android.app.ActivityThread.access $ 2300(ActivityThread.java:125) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432):at android.os.Handler.dispatchMessage(Handler.java:99) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432):at android.os.Looper.loop(Looper.java:123) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432):at 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):at android.content.ContextWrapper.getAssets(ContextWrapper.java:74) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432 ):at android.PhysicsEngine4.MyActivity。(MyActivity.java:19) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432):at android.PhysicsEngine4.HomeScreen。(HomeScreen.java:12) 03- 07 23:47:16.389:ERROR/AndroidRuntime(9432):at java.lang.Class.newInstanceImpl(Nat ive 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 ):at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 03-07 23:47:16.389:ERROR/AndroidRuntime(9432):... 11多个

+0

能否请您发表您的logcat数据 – 2011-03-08 04:24:13

+0

肯定的是,它会在那里在一分钟 – 2011-03-08 04:46:47

+0

试试这个LAVI = Typeface.createFromAsset(this.getAssets(), “字体/ Lavi.ttf”); – Want2bExpert 2015-09-12 05:42:29

HI,

PLZ检查字体名称的情况下(大写字符)lavi.ttf或lavi.ttf并尝试在代码中使用与放置在资产文件夹中相同的代码。

+0

它是字体文件夹中的Lavi.ttf。谢谢您的好意。 – 2011-03-08 04:44:50

+0

将这个字体放入ur资源文件夹中并运行 – Mathew 2011-03-08 07:08:04

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

<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>