【发布时间】:2013-10-04 17:09:17
【问题描述】:
确定父活动使用 startActivityForResult 调用 BuyActivity 并向父活动返回 3 个值。其中之一是类别。有 3 类食物,个人和教育可以选择。当我选择教育或个人时我没有问题,但是当我选择食物时我得到了这个错误,但是父活动仍然收到了返回的所有 3 个值。所以有人可以帮忙吗?
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {apps.project/apps.project.ConsultExpert}: java.lang.NullPointerException
这个函数调用startActivityForResult
private void displayBuyQuestionnaire() {
Intent intent = new Intent(this, BuyActivity.class);
startActivityForResult(intent, BUY_ADVICE);
}
在 BuyActivity.class 中
Intent returnIntent = new Intent();
returnIntent.putExtra("item_name", iName);
returnIntent.putExtra("item_price", iPrice);
returnIntent.putExtra("item_category", iCategory);
setResult(RESULT_OK,returnIntent);
finish();
onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch(requestCode) {
case BUDGET_ADVICE:
if (resultCode == RESULT_OK && data.hasExtra("status")) {
item_name = data.getStringExtra("status");
Log.d("return", data.getStringExtra("status"));
runBudgetTree();
}
else {
if(resultCode == RESULT_OK)
Log.d("msg", "result code ok tp x semua return");
}
break;
case BUY_ADVICE:
if (resultCode == RESULT_OK) {
item_name = data.getStringExtra("item_name");
item_category = data.getStringExtra("item_category");
item_price = data.getDoubleExtra("item_price", 0);
runBuyTree();
}
break;
}
LogCat
01-09 17:56:51.776: D/var i(3159): answer1 01-09 17:56:51.776: D/var i(3159): answer2 01-09 17:56:51.776: D/var i(3159): answer3 01-09 17:56:51.781: D/AndroidRuntime(3159): 关闭 VM 01-09 17:56:51.781: W/dalvikvm(3159): threadid=1: 线程退出 未捕获的异常(组=0x4001e578)01-09 17:56:51.786: E/AndroidRuntime(3159): 致命例外: main 01-09 17:56:51.786: E/AndroidRuntime(3159): java.lang.RuntimeException: 交付失败 结果 ResultInfo{who=null, request=1, result=-1, data=Intent { (有 extras) }} 到活动 {apps.project/apps.project.ConsultExpert}: java.lang.NullPointerException 01-09 17:56:51.786: E/AndroidRuntime(3159):在 android.app.ActivityThread.deliverResults(ActivityThread.java:2536) 01-09 17:56:51.786: E/AndroidRuntime(3159): 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:2578) 01-09 17:56:51.786: E/AndroidRuntime(3159): 在 android.app.ActivityThread.access$2000(ActivityThread.java:117) 01-09 17:56:51.786:E/AndroidRuntime(3159):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:965) 01-09 17:56:51.786: E/AndroidRuntime(3159): 在 android.os.Handler.dispatchMessage(Handler.java:99) 01-09 17:56:51.786:E/AndroidRuntime(3159):在 android.os.Looper.loop(Looper.java:130) 01-09 17:56:51.786: E/AndroidRuntime(3159):在 android.app.ActivityThread.main(ActivityThread.java:3691) 01-09 17:56:51.786:E/AndroidRuntime(3159):在 java.lang.reflect.Method.invokeNative(Native Method) 01-09 17:56:51.786:E/AndroidRuntime(3159):在 java.lang.reflect.Method.invoke(Method.java:507) 01-09 17:56:51.786: E/AndroidRuntime(3159):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 01-09 17:56:51.786: E/AndroidRuntime(3159): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 01-09 17:56:51.786:E/AndroidRuntime(3159):在 dalvik.system.NativeStart.main(本机方法)01-09 17:56:51.786: E/AndroidRuntime(3159):引起:java.lang.NullPointerException 01-09 17:56:51.786: E/AndroidRuntime(3159): 在 apps.project.ConsultExpert.runBuyTree(ConsultExpert.java:364) 01-09 17:56:51.786:E/AndroidRuntime(3159):在 apps.project.ConsultExpert.onActivityResult(ConsultExpert.java:1769) 01-09 17:56:51.786: E/AndroidRuntime(3159): 在 android.app.Activity.dispatchActivityResult(Activity.java:3934) 01-09 17:56:51.786:E/AndroidRuntime(3159):在 android.app.ActivityThread.deliverResults(ActivityThread.java:2532) 01-09 17:56:51.786: E/AndroidRuntime(3159): ... 11 更多
【问题讨论】: