Java 从startActivityForResult获取具有返回意图的NullPointerException

Java 从startActivityForResult获取具有返回意图的NullPointerException,java,android,Java,Android,不知道我做错了什么。我已经看了好几遍了 我通过以下方式为结果启动活动: Intent go = new Intent("android.intent.action.NEWTOURNAMENT"); startActivityForResult(go,2); 然后,在结果活动中,我有一个按钮,单击该按钮时调用“Send()”方法: 因此,如果这些值中的任何一个为空,它将不会发送任何内容 但是,当我运行此命令时,我得到一个带有错误的强制关闭logcat声明是由ArrayLi

不知道我做错了什么。我已经看了好几遍了

我通过以下方式为结果启动活动:

Intent go = new Intent("android.intent.action.NEWTOURNAMENT");
            startActivityForResult(go,2);
然后,在结果活动中,我有一个按钮,单击该按钮时调用“Send()”方法:

因此,如果这些值中的任何一个为空,它将不会发送任何内容

但是,当我运行此命令时,我得到一个带有错误的强制关闭logcat声明是由ArrayList Tournames中创建新锦标赛的第一行上的空指针异常引起的:

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode==2){
        if(resultCode==RESULT_OK){
            tournaments.add(new Tournament(data.getStringExtra("venueData"), data.getIntExtra("monthData", 0),
                    data.getIntExtra("dayData", 0), data.getIntExtra("yearData", 0), data.getIntExtra("buyinData", 0),
                    data.getIntExtra("feeData", 0)));
            calculations();
        }

    }
如果有帮助的话,下面是日志:

01-23 13:43:03.105: E/AndroidRuntime(941): FATAL EXCEPTION: main
01-23 13:43:03.105: E/AndroidRuntime(941): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {com.mustaroenterprise.APTTO/com.mustaroenterprise.APTTO.MainActivity}: java.lang.NullPointerException
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3141)
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3184)
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.app.ActivityThread.access$1100(ActivityThread.java:130)
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.os.Looper.loop(Looper.java:137)
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.app.ActivityThread.main(ActivityThread.java:4745)
01-23 13:43:03.105: E/AndroidRuntime(941):  at java.lang.reflect.Method.invokeNative(Native Method)
01-23 13:43:03.105: E/AndroidRuntime(941):  at java.lang.reflect.Method.invoke(Method.java:511)
01-23 13:43:03.105: E/AndroidRuntime(941):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-23 13:43:03.105: E/AndroidRuntime(941):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-23 13:43:03.105: E/AndroidRuntime(941):  at dalvik.system.NativeStart.main(Native Method)
01-23 13:43:03.105: E/AndroidRuntime(941): Caused by: java.lang.NullPointerException
01-23 13:43:03.105: E/AndroidRuntime(941):  at com.mustaroenterprise.APTTO.MainActivity.onActivityResult(MainActivity.java:68)
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.app.Activity.dispatchActivityResult(Activity.java:5192)
01-23 13:43:03.105: E/AndroidRuntime(941):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3137)

确保已初始化
锦标赛。

如果已初始化,则您的
venueData
可能为
null

原因是,

if(venue.getText().toString().equals(""))
这里检查
字符串是否为空。您还需要检查它是否为
null
。如果您确定它不是
null
,那么您的代码似乎没有问题

试试看

if(venue.getText().toString().equals("") || venue.getText() == null)  

MainActivity的第68行是什么?显示MainActivity代码?MainActivity的第68行显示为锦标赛。添加(新锦标赛)(data.getStringExtra(..我猜,
venueData
是空的。如果它是
monthData
,默认情况下会设置为
0
,所以我猜不会有错误。在运行
之前,添加(…)
句子,尝试在
venueData
字段上使用
Log
,看看它是否为空。@NicolasMustaro锦标赛初始化了吗?
if(venue.getText().toString().equals("") || venue.getText() == null)