确定父活动使用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):答案2 01-09 17:56:51.776:D / var i(3159):答案3 01-09
17:56:51.781:D / AndroidRuntime(3159):关闭VM 01-09
17:56:51.781:W / dalvikvm(3159):threadid = 1:线程退出
未捕获的异常(group = 0x4001e578)01-09 17:56:51.786:
E / AndroidRuntime(3159):致命异常:主要01-09 17:56:51.786:
E / AndroidRuntime(3159):java.lang.RuntimeException:传递失败
结果ResultInfo {who = null,request = 1,result = -1,data = Intent {(has
活动{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(本机方法)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个
最佳答案
您必须放置displayBuyQuestionnaire()方法行
Intent intent = new Intent(this, BuyActivity.class);
这样
Intent intent = new Intent(<your class name>.this, BuyActivity.class);