请帮助我理解如何从logcat中检测程序中的错误

时间:2012-05-08 17:30:15

标签: android logcat

我的应用已停止在模拟器上工作“很遗憾”。我和我有logcat,但我不明白如何解决错误。请帮我。提前致谢。这是logcat

05-07 14:34:01.302: E/AndroidRuntime(713): FATAL EXCEPTION: main
05-07 14:34:01.302: E/AndroidRuntime(713): java.lang.RuntimeException: Unable to start activity ComponentInfo{my.calc/my.calc.CalcActivity}: java.lang.NullPointerException
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.os.Looper.loop(Looper.java:137)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.app.ActivityThread.main(ActivityThread.java:4424)
05-07 14:34:01.302: E/AndroidRuntime(713):  at java.lang.reflect.Method.invokeNative(Native Method)
05-07 14:34:01.302: E/AndroidRuntime(713):  at java.lang.reflect.Method.invoke(Method.java:511)
05-07 14:34:01.302: E/AndroidRuntime(713):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-07 14:34:01.302: E/AndroidRuntime(713):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-07 14:34:01.302: E/AndroidRuntime(713):  at dalvik.system.NativeStart.main(Native Method)
05-07 14:34:01.302: E/AndroidRuntime(713): Caused by: java.lang.NullPointerException
05-07 14:34:01.302: E/AndroidRuntime(713):  at my.calc.CalcActivity.onCreate(CalcActivity.java:30)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.app.Activity.performCreate(Activity.java:4465)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-07 14:34:01.302: E/AndroidRuntime(713):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
05-07 14:34:01.302: E/AndroidRuntime(713):  ... 11 more

2 个答案:

答案 0 :(得分:4)

 Caused by: java.lang.NullPointerException

上面一行表示你有空指针异常,下面表示行号(CalcActivity.java:30)。

05-07 14:34:01.302: E/AndroidRuntime(713):  at my.calc.CalcActivity.onCreate(CalcActivity.java:30)

希望您可能忘记在oncreate()中使用setContentView并使用xml文件组件。

<强>更新:::

adapter = new ArrayAdapter<CharSequence>(CalcActivity.this,android.R.layout.simple_spinner_dropdown_item, your_array_list_of_charsequence);

尝试在adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

之前添加上一行

答案 1 :(得分:0)

只是为了解释所有那些“at”的含义......它被称为堆栈跟踪,是一种在出现问题时确定应用程序正在做什么的方法。想象一下,你有以下PseudoCode

File1中:

1 define function MyFunction(SomeParam)
2     Throw an exception here
3 end definition

文件2:

1 DoSomething()
2 DoSomethingElse()
3 Call MyFunction
4 DoSomething()

您在堆栈跟踪中看到的内容类似于

Exception Thrown
at File1 Line 2
at File2 Line 3

这告诉您MyFunction File1File2调用时会抛出异常。

显然,在实际程序中,许多函数调用了许多其他函数,因此堆栈跟踪可能会相当长一些 - 但原理是相同的。

使用框架时需要注意的另一件事是,可能会在您自己编写的代码中抛出异常。这或者意味着您使用框架错误或框架有错误。 99%的时间是因为你使用错了

如果它是一个框架异常,请跟踪堆栈跟踪,直到找到您编写的调用框架的代码。这很可能是问题所在。

希望有助于澄清你所看到的内容