Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何正确返回已启动活动的结果_Android - Fatal编程技术网

Android 如何正确返回已启动活动的结果

Android 如何正确返回已启动活动的结果,android,Android,我已经开始了另一个活动,我想将结果返回给调用它的活动,我已经阅读了一些教程并尝试了它,但我遇到了如下错误: 08-23 17:48:58.005: E/AndroidRuntime(581): java.lang.RuntimeException: Failure delivering result ResultInfo{who=Tab2, request=0, result=-1, data=Intent { cmp=com.organizer.medical.activities/.AddP

我已经开始了另一个活动,我想将结果返回给调用它的活动,我已经阅读了一些教程并尝试了它,但我遇到了如下错误:

08-23 17:48:58.005: E/AndroidRuntime(581): java.lang.RuntimeException: Failure delivering result ResultInfo{who=Tab2, request=0, result=-1, data=Intent { cmp=com.organizer.medical.activities/.AddPatientActivity (has extras) }} to activity {com.organizer.medical.activities/com.organizer.medical.activities.Main}: java.lang.NullPointerException
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2980)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3023)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.access$1100(ActivityThread.java:123)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1177)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.os.Looper.loop(Looper.java:137)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.main(ActivityThread.java:4424)
08-23 17:48:58.005: E/AndroidRuntime(581):  at java.lang.reflect.Method.invokeNative(Native Method)
08-23 17:48:58.005: E/AndroidRuntime(581):  at java.lang.reflect.Method.invoke(Method.java:511)
08-23 17:48:58.005: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-23 17:48:58.005: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-23 17:48:58.005: E/AndroidRuntime(581):  at dalvik.system.NativeStart.main(Native Method)
08-23 17:48:58.005: E/AndroidRuntime(581): Caused by: java.lang.NullPointerException
08-23 17:48:58.005: E/AndroidRuntime(581):  at com.organizer.medical.activities.PatientActivity.onActivityResult(PatientActivity.java:347)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityGroup.dispatchActivityResult(ActivityGroup.java:122)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2976)
08-23 17:48:58.005: E/AndroidRuntime(581):  ... 11 more
以下是我的呼叫活动代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
      if (resultCode == RESULT_OK) {
        int cat = Integer.parseInt(getIntent().getExtras().get("category").toString());
        loadList(cat);
       }
 }
}
这是在调用活动的oncreate()上:

startActivityForResult(new Intent(this, CalledActivity.class), ADD_PATIENT);
   setResult(RESULT_OK, getIntent().putExtra("category", status.isChecked()?1:2));
   finish();
这是我的“被调用”活动代码:

startActivityForResult(new Intent(this, CalledActivity.class), ADD_PATIENT);
   setResult(RESULT_OK, getIntent().putExtra("category", status.isChecked()?1:2));
   finish();
顺便说一句,在我调用的活动中,
setResult()
finish()
仅通过调用的活动上的一个按钮进行
onClick

我真的不知道如何正确使用
startActivityForResult()
。请分享你对这方面的知识

更新



事实证明,我在onActivityResult()上访问的意图导致了null异常错误,并证明传递给该方法的“date”变量就是要使用的变量:

int cat = Integer.parseInt(**data**.getExtras().get("category").toString());

您好,此示例返回字符串,但对于示例,则可以:

Intent intent = new Intent();
Bundle b = new Bundle();
b.putString("lastPath", this.myPath.getText().toString());
intent.putExtras(b);
setResult(SUCCESS_RETURN_CODE, intent);
finish();
要读取这些值,请使用:

Bundle b = data.getExtras();
lastPath = b.getString("lastPath");

事实证明,我在onActivityResult()上访问的意图导致了null异常错误,并证明传递给该方法的“date”变量就是要使用的变量:


int cat=Integer.parseInt(data.getExtras().get(“category”).toString())

检查PatientActivity.java行num 347后,您将获得NullPointer Exception这一部分:int cat=Integer.parseInt(getIntent().getExtras().get(“category”).toString());我不知道怎么了我从哪里弄到的空零件。。我在设定的结果中做错了吗?真的知道这个想法,在网上没有找到任何合法的解释。你调试过这个代码行吗?然后,您可以检查语句的哪一部分为Null。@lemoncodes-一旦尝试data.getExtras().get(“category”).toString()是,尝试调试,结果证明@Braj是正确的,这是导致Null异常错误的意图。。tnx的伙计们注意!已经得到了答案,先生,我在我的代码中使用了错误的意图,非常粗心:D但是无论如何,对于这个输入,我也要试试这个