应用程序在Eclipse模拟器上运行正常但在手机上出错 - FroYo

时间:2011-02-03 17:31:59

标签: android eclipse exception emulation android-2.2-froyo

我有一个应用程序(虽然我不知道为什么),至少要求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之后,我进行了设置,其中包括添加一个新的键盘,它自动改变了第一个字母的大小写,所以我不能正确处理大/小的情况 - 这是一个愚蠢的错误。

感谢您的时间,非常感谢!

1 个答案:

答案 0 :(得分:1)

嗯,显而易见的答案是PlayerCharacter toon = worker.getToons().get(latestToon[0] + "&" + latestToon[1]);返回null。

要弄明白为什么你可以分解为几步。 latestToon[0] + "&" + latestToon[1]给你什么?这是你期望的吗?我假设getToons()返回某种地图?它的内容是什么?