我有一个应用程序(虽然我不知道为什么),至少要求Android 2.2工作,所以在我的手机上使用Froyo后,我测试了应用程序,虽然它安装并开始运行,我执行一个函数,它会导致以下错误:
“应用已停止意外。请再试一次。”
它在运行Froyo的模拟器上工作正常,所以我无法弄清楚问题是什么。 adb logcat中的错误如下:
W / dalvikvm(1027):threadid = 1:线程退出未捕获的异常(group = 0x2aacc8a0)
它给出了一个空指针异常,除了我知道没有空指针异常,因为它在模拟器中工作正常,我可以从adb logcat中的System.out看到该值不会为null
有没有人知道如何解决这个问题?
感谢您的时间!
编辑:这是请求的堆栈:
W / dalvikvm(861):threadid = 1:线程退出,未捕获异常(group = 0x2aacc8a0) E / AndroidRuntime(861):致命异常:主要 E / AndroidRuntime(861):java.lang.NullPointerException E / AndroidRuntime(861):at com.andrWow.wCraftArmory.Armory.updateUI(Armory.java:150) E / AndroidRuntime(861):at com.andrWow.wCraftArmory.Armory.access $ 2(Armory.java:140) E / AndroidRuntime(861):at com.andrWow.wCraftArmory.Armory $ carryOutSearch.onPostExecute(Armory.java:282) E / AndroidRuntime(861):at com.andrWow.wCraftArmory.Armory $ carryOutSearch.onPostExecute(Armory.java:1) E / AndroidRuntime(861):在android.os.AsyncTask.finish(AsyncTask.java:417) E / AndroidRuntime(861):在android.os.AsyncTask.access $ 300(AsyncTask.java:127) E / AndroidRuntime(861):在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:429) E / AndroidRuntime(861):在android.os.Handler.dispatchMessage(Handler.java:99) E / AndroidRuntime(861):在android.os.Looper.loop(Looper.java:123) E / AndroidRuntime(861):在android.app.ActivityThread.main(ActivityThread.java:4627) E / AndroidRuntime(861):at java.lang.reflect.Method.invokeNative(Native Method) E / AndroidRuntime(861):at java.lang.reflect.Method.invoke(Method.java:521) E / AndroidRuntime(861):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:876) E / AndroidRuntime(861):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) E / AndroidRuntime(861):at dalvik.system.NativeStart.main(Native Method) W / ActivityManager(123):强制完成活动com.andrWow.wCraftArmory / .Armory
以下是第150行的代码 - 第二行是第150行:
PlayerCharacter toon = worker.getToons().get(latestToon[0] + "&" + latestToon[1]);
LinkedHashMap<String, LinkedHashMap<String, String>> bM = toon.getCategoryMap("baseStats");
如果分配“toon”的结果不是null,那么它只会走到这一步。带有该键的getCategoryMap的结果也不应该为null,因为在创建时使用该键添加值几乎是硬编码的。 getCategoryMap是一个getter,它检查HashMap是否包含该键,如果没有,它会给system.out中的错误提供错误。
解决了编辑:
感谢大家的帮助。 我真的不认为这是代码的错误,因为我知道它在模拟器上工作,我在手机上运行了一次,但事实证明这是我的代码的错误。获得FroYo之后,我进行了设置,其中包括添加一个新的键盘,它自动改变了第一个字母的大小写,所以我不能正确处理大/小的情况 - 这是一个愚蠢的错误。
感谢您的时间,非常感谢!
答案 0 :(得分:1)
嗯,显而易见的答案是PlayerCharacter toon = worker.getToons().get(latestToon[0] + "&" + latestToon[1]);
返回null。
要弄明白为什么你可以分解为几步。 latestToon[0] + "&" + latestToon[1]
给你什么?这是你期望的吗?我假设getToons()
返回某种地图?它的内容是什么?