确定父活动使用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);

10-07 19:23
查看更多