我似乎无法捕捉到这个异常并且应用程序崩溃了。
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();
}
我只是不断收到应用程序崩溃和空指针异常
这是我的Log Cat
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
答案 0 :(得分:1)
正如Gabriel Netto所述,您的错误位于onCreate
的{{1}}。对CustomizedListViewStation
的调用只会触发对Android操作系统的意图并立即返回,因此它不会捕获您的新活动引发的任何异常。实际上,您在startActivityForResult
之后放置的代码甚至可能会在startActivityForResult
之前运行。您需要检查onCreate
onCreate
中的错误。
答案 1 :(得分:0)
由于Android操作系统的体系结构,您无法捕获此类异常。通过调用startActivity
(或类似方法),您实际上并没有立即创建新的Activity
。相反,您说想要显示此类Activity
和操作系统会注册您的Intent
(字面意思是意图)。然后,当操作系统决定处理您的Intent
时,它将创建您的Activity
。
换句话说,Activity
将不会在startActivity
的调用中创建,但稍后会创建。在OS的一些内部逻辑中。所以,当抛出异常时 - 你无法捕捉它,因为它不再是你的方法了。
答案 2 :(得分:0)
正如Dmitry Zaitsev所说,你不会在startActivity处理活动生命周期的异常。
相反,您应该在可以抛出异常的第二个Activity的onCreate上捕获异常。
答案 3 :(得分:0)
非常感谢所有回答的人。这确实很好用。目标活动抛出了错误。
修复是在创建CustomizedListViewStudentZone时处理错误。
我对此方法应用了try catch,问题已修复。