0

我似乎根本无法捕捉到这个异常,应用程序就崩溃了。

public void GoToStation(View v)
{
try
{
 Intent myIntent = new Intent(MainActivity.this, CustomizedListViewStudentZone.class);
 startActivityForResult(myIntent, 0);
} 

}
catch (Exception e)
{
Toast.makeText(this, "You need a data connection to view Safety Zones", Toast.LENGTH_LONG).show();  

}

我只是不断收到应用程序崩溃和空指针异常

这是我的原木猫

01-06 04:55:28.667: E/AndroidRuntime(2983): FATAL EXCEPTION: main
01-06 04:55:28.667: E/AndroidRuntime(2983): java.lang.RuntimeException: Unable to start activity ComponentInfo{police.uk.greatermanchesterpoliceandroid/police.uk.greatermanchesterpoliceandroid.CustomizedListViewStation}: java.lang.NullPointerException
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1830)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.access$1500(ActivityThread.java:132)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.os.Looper.loop(Looper.java:150)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.main(ActivityThread.java:4277)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at java.lang.reflect.Method.invokeNative(Native Method)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at java.lang.reflect.Method.invoke(Method.java:507)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at dalvik.system.NativeStart.main(Native Method)
01-06 04:55:28.667: E/AndroidRuntime(2983): Caused by: java.lang.NullPointerException
01-06 04:55:28.667: E/AndroidRuntime(2983):     at police.uk.greatermanchesterpoliceandroid.CustomizedListViewStation.onCreate(CustomizedListViewStation.java:100)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794)
01-06 04:55:28.667: E/AndroidRuntime(2983):     ... 11 more
4

4 回答 4

1

正如 Gabriel Netto 所说,您的错误onCreateCustomizedListViewStation. 调用startActivityForResult只是触发了对 android 操作系统的意图,并会立即返回,因此它不会捕获新活动引发的任何异常。实际上,您放置的代码startActivityForResult甚至可能在此之前运行onCreate。您需要检查 中的onCreate错误CustomizedListViewStation

于 2013-08-07T21:14:18.273 回答
0

非常感谢所有回答的人。这确实是很好的代码。错误是由目标活动引发的。

修复是处理创建 CustomizedListViewStudentZone 时的错误。

我对该方法应用了try catch,问题得到了解决。

于 2013-08-08T06:13:41.023 回答
0

由于 Android 操作系统的架构,您无法捕获此类异常。通过调用startActivity(或类似方法),您实际上并没有Activity立即创建新的。相反,您说您显示这样的内容Activity,并且操作系统会注册您的Intent(字面意思是意图)来这样做。然后,当操作系统决定是处理您的好时机时,Intent它将创建您的Activity.

换句话说 -Activity不会在对 的调用中创建startActivity,而是在稍后创建。在操作系统的一些内部逻辑中。因此,当抛出异常时 - 您无法捕获它,因为它不再在您的方法中。

于 2013-08-07T21:17:16.283 回答
0

正如 Dmitry Zaitsev 所说,您不会在 startActivity 处处理 Activity 生命周期的异常。

相反,您应该在可以抛出异常的第二个 Activity 的 onCreate 处捕获异常。

于 2013-08-07T22:26:48.943 回答