不可否认,我的问题与此问题基本相同,但似乎没有答案:
handleStopActivity中的NullPointerException - 在堆栈跟踪中没有对我的代码的引用
在上周内下载了Eclipse Helios,Android Developer Tools插件和JDK.我正在搞乱我的设备上的应用程序,在调试模式下运行它,它意外终止.我意识到我已经导致了NullPointerException并且问题本身不是很长时间的问题.
然而,问题是调试器似乎无法识别我的代码中抛出异常的位置.堆栈跟踪不引用我的代码.
实际上,如果我在OnCreate()方法中加入以下内容,我会遇到同样的问题
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//lI("onCreate()"); //A silly logging thing I messed around with
Integer iDareYou = null;
iDareYou.byteValue();
Run Code Online (Sandbox Code Playgroud)
值得赞扬的是,Eclipse当然警告我,代码可能会在我脸上爆炸.但是当我在我的设备上实际运行它时,返回的堆栈跟踪如下:
Thread [<1> main] (Suspended (exception RuntimeException))
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2787
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2803
ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 135
ActivityThread$H.handleMessage(Message) line: 2136
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 144
ActivityThread.main(String[]) line: 4937
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: …Run Code Online (Sandbox Code Playgroud) 因此,有一些错误会不断出现与我相关的跟踪中的任何内容,这里有一个示例跟踪:
java.lang.NullPointerException
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:2484)
at android.app.ActivityThread.access$1800(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:948)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3695)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
其他迹线类似,只有行号变化:2484,2472和2476.
另外3个提到设备的报道提到:M865华为Ascend II应该有2.3.
在给定行号查看源代码2.1 - 4.1(我的应用程序minSdk为7)之后,这些行可能会抛出错误:
2.3.7 - 第2472行
2.3.6 - 第2472行
private final void handleStopActivity(IBinder token, boolean show, int configChanges) {
ActivityClientRecord r = mActivities.get(token);
r.activity.mConfigChangeFlags |= configChanges; // line 2472
StopInfo info = new StopInfo();
performStopActivityInner(r, info, show);
...
Run Code Online (Sandbox Code Playgroud)
是什么导致了这个以及如何预防?
我的应用程序有时会在三星手机上崩溃:"java.lang.NullPointerException"但它并没有在任何地方引用我的代码.我该怎么做才能避免这个错误?
java.lang.NullPointerException
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:2476)
at android.app.ActivityThread.access$1800(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:952)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud) 当我离开FragmentActivity并转到ListActivity时,我收到一个NullPointerException.在我获得Force Close之前,我实际上开始看清单.但是LogCat引用了我刚刚来自的Activity.
LogCat说:
08-31 07:38:53.356: E/AndroidRuntime(8134): FATAL EXCEPTION: main
08-31 07:38:53.356: E/AndroidRuntime(8134): java.lang.NullPointerException
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481)
08-31 07:38:53.356: E/AndroidRuntime(8134): at com.---.myApp.MasterCat.onSaveInstanceState(MasterCat.java:119)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.Activity.performSaveInstanceState(Activity.java:1137)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1215)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3077)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3136)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.access$900(ActivityThread.java:142)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1235)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.os.Handler.dispatchMessage(Handler.java:99)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.os.Looper.loop(Looper.java:137)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.main(ActivityThread.java:4928)
08-31 07:38:53.356: …Run Code Online (Sandbox Code Playgroud)