2012-01-09 3 views
1

ok родительский вызов активности BuyActivity с использованием startActivityForResult и возвращает 3 значения родительской активности. Одна из них - категория. Есть 3 категории питания, личного и образования, которые можно выбрать. У меня нет проблем, когда я выбираю образование или личное, но я получаю эту ошибку, когда я выбираю пищу, но родительская активность по-прежнему получила все 3 значения, возвращенные. Так кто может помочь?Умение startActivityForResult возвратил результат, но программа разбилась

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 : thread exiting with uncaught exception (group = 0x4001e578) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): FATAL EXCEPTION: main 01-09 17: 56: 51.786: E/AndroidRuntime (3159): java.lang.RuntimeException: Ошибка доставки result ResultInfo {who = null, request = 1, result = -1, data = Intent {(имеет дополнительных)}} для действия {apps.project/apps.project.ConsultExpert}: java.lang.NullPointerException 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at android.app.ActivityThread.deliverResults (ActivityThread.java:2536) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at android.app.ActivityThread.handleSendResult (ActivityThread.java:2578) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at android.app.ActivityThread.access $ 2000 (ActivityThread.java:117) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:965) 01-09 17: 56: 51.786 : E/AndroidRuntime (3159): at 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): at android.app.ActivityThread.main (ActivityThread.java:3691) 01- 09 17: 56: 51.786: E/AndroidRuntime (3159): at java.lang.reflect.Method.invokeNative (родной метод) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at java .lang.reflect.Method.invoke (Method.java:507) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit. java: 907) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:665) 01-09 17: 56: 51.786 : E/AndroidRuntime (315 9): at 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): at apps.project.ConsultExpert.runBuyTree (ConsultExpert.java:364) 01-09 17:56:51.786: E/AndroidRuntime (3159): at apps.project.ConsultExpert.onActivityResult (ConsultExpert.java:1769) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at android.app.Activity. dispatchActivityResult (Activity.java:3934) 01-09 17: 56: 51.786: E/AndroidRuntime (3159): at android.app.ActivityThread.deliverResults (ActivityThread.java:2532) 01-09 17: 56: 51.786 : E/AndroidRuntime (3159): ... подробнее 11

ответ

1

Вы должны поместить метод displayBuyQuestionnaire() линию

  Intent intent = new Intent(this, BuyActivity.class); 

этим

  Intent intent = new Intent(<your class name>.this, BuyActivity.class); 
+0

по-прежнему получают ту же ошибку – aDee

0

Thred старый, но просто на будущее:

же проблема взял мои 1 часа так просто делюсь решение, которое работало для меня. Я пыталась получить сообщение от второй активности в Textview Первого. ResponseToFirst - это идентификатор сообщения и Message_fromsecond - textview.

Ранее onActivityResult я использовал

Bundle extras = getIntent().getExtras(); 
Message_fromsecond.setText(extras.getString("ResponseToFirst")); //crashed here 

Позже я обнаружил, что мне нужно использовать

String returnString = data.getExtras().getString("ResponseToFirst"); 
Message_fromsecond.setText(returnString); 

Для получения дополнительной информации Вы можете Here.

Смежные вопросы