我正在制作应用,但我需要一些帮助。在实践中,我创建了这个代码:
try{
Bundle extras = getIntent().getExtras();
check = extras.getInt("checkpoint1");
}catch(NumberFormatException nfe){
check = 0;
}
在oncreate中,您尝试从另一个活动获取变量检查的值,如果尝试不成功,则此变量必须设置为零。但是现在编写的代码给了我错误。你能帮帮我吗?
你的帮助给了我同样的错误:
E/AndroidRuntime(3028): FATAL EXCEPTION: main
E/AndroidRuntime(3028): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.BisMagdev.notesRainbow/it.BisMagdev.notesRainbow.livello4}: java.lang.NullPointerException
E/AndroidRuntime(3028): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime(3028): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(3028): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(3028): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(3028): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(3028): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(3028): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(3028): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(3028): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(3028): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(3028): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(3028): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(3028): Caused by: java.lang.NullPointerException
E/AndroidRuntime(3028): at it.BisMagdev.notesRainbow.livello4.onCreate(livello4.java:60)
E/AndroidRuntime(3028): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(3028): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(3028): ... 11 more
答案 0 :(得分:2)
您可以设置默认返回值,不需要try-catch:
Bundle extras = getIntent().getExtras();
check = extras.getInt("checkpoint1", 0);
此外,getInt
不会抛出NumberFormatException
,因此您无法捕获该异常......
答案 1 :(得分:0)
我不认为这些陈述需要尝试/捕获阻止 ...所以删除它们并尝试..
Bundle extras = getIntent().getExtras();
check = extras.getInt("checkpoint1");
然后,您可以在将"checkpoint1"
变量分配给check
之前检查if ((extras.getInt("checkpoint1"))!=0){
check = extras.getInt("checkpoint1");
}
else{
check = 0;
}
的值。
{{1}}
答案 2 :(得分:0)
我认为你可以做到
if getIntent().hasExtra("checkpoint") { // this checks for the extra...
Bundle extras = getIntent().getExtras();
if (null != getIntent().getExtras()){
check = extras.getInt("checkpoint", defaultValue); // where default is non zero
check = extras.getInt("checkpoint"); // will be zero by default if checkpoint is not found
} else {
// There are no extras associated with this intent
}
} else {
// checkpoint not contained in the extras...
}
答案 3 :(得分:0)
livello4.java第60行是什么?我怀疑getExtras()返回的包是null。
答案 4 :(得分:0)
你捕获numberformatexception但是你得到一个nullpointer异常。你必须捕获nullpointer异常,或者你只是捕获异常。这意味着当事情出现问题时,您可以将变量设置为0。
答案 5 :(得分:0)
您必须更改Throwable中的NumberFormatException,以确保捕获NullPointerException。