1

Я новичок в программировании на Android, и у меня есть действие, которое имеет imageButton, когда его щелкают, он открывает новое действие для результатов с диалоговой темой. Пользователь вводит данные и клики. Затем мне нужно получить эти данные из намерения обновить некоторые изображения в первом действии. Проблема в том, что я продолжаю получать исключение NullPointerException, когда пытаюсь получить доступ к строке в намерении.NullPointerException при попытке получить данные из намерения в onActivityResult

метод

1-й на данный вид деятельности OnClick:

public void openDetails(View view){ 

     Intent intent = new Intent(this, FinalAnalysisDialog.class); 
     //add to backStack 
     startActivityForResult(intent, 1); 

    } 

второй активности (диалог тематических):

@Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.final_analysis_activity); 

     WindowManager.LayoutParams params = getWindow().getAttributes(); 
     //params.x = -100; 
     params.height = 500; 
     params.width = 600; 
     //params.y = -50; 

     this.getWindow().setAttributes(params); 

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     //final?? 
     final Spinner dropDown = (Spinner) findViewById(R.id.faResultsDropDown); 
     dropDown.setSelection(2); 

     Button submit = (Button) findViewById(R.id.faSubmitButton); 
     submit.setOnClickListener(new OnClickListener() { 
      //based on the value of selected item from dropDown (spinner), update the 
      //progress status picture 
      @Override 
      public void onClick(View v) { 
       Bundle bundle = new Bundle(); 
       //dropDown.getSelectedItemPosition(); 
       String result = dropDown.getSelectedItem().toString(); 
       //String result = "In process"; 
       bundle.putString("result", result); 

       Intent intent = new Intent(); 
       //intent.putExtras(bundle); 
       intent.putExtra("result", result); 
       setResult(RESULT_OK, intent); 
     finish(); 
      } 
     }); 

Тогда я пытаюсь получить строку обратно:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode==RESULT_OK && requestCode==1){ 
      //ImageButton mFApic = (ImageButton)home.getView().findViewById(R.id.mInsStepImage);//andrology_home_fragment 

      ImageButton mFApic = (ImageButton)findViewById(R.id.mInsStepImage);//andrology_home_fragment 
      View mHomeFApic = (View)findViewById(R.id.maleFA);//male_details 
      //do something with result 
      //Intent dataResult = data.getData(); 
      //Bundle bundle =dataResult.getExtras(); 
      //String result = bundle.getString("result"); 

      Bundle extras = data.getExtras(); 
      String result = extras.getString("result"); 
      //String result = data.getStringExtra(); 
      if (result.equals("Not started")){ 
       mFApic.setBackgroundResource(R.drawable.orange_process); 
       mHomeFApic.setBackgroundResource(R.drawable.orange_process); 
      }else if (result.equals("In process")){ 
       mFApic.setBackgroundResource(R.drawable.orange_process); 
       mHomeFApic.setBackgroundResource(R.drawable.orange_process); 
      }else if (result.equals("Complete")){ 
       mFApic.setBackgroundResource(R.drawable.green_process); 
       mHomeFApic.setBackgroundResource(R.drawable.green_process); 
      }else if (result.equals("Problem")){ 
       mFApic.setBackgroundResource(R.drawable.red_process); 
       mHomeFApic.setBackgroundResource(R.drawable.red_process); 
      } 
     } 

Я попытался отправить статическую строку «In process», чтобы узнать, может ли проблема получить значение из spinner, но это не сработало. Я искал подобные вопросы, но я не могу заставить это работать. Что мне не хватает? Любая помощь будет принята с благодарностью ..

Вот мой LogCat:

05-09 14:26:31.133: E/AndroidRuntime(4984): FATAL EXCEPTION: main 
05-09 14:26:31.133: E/AndroidRuntime(4984): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.example.seattleivf/com.example.seattleivf.TabActionBarHomeActivity}: java.lang.NullPointerException 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3179) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3222) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.app.ActivityThread.access$1100(ActivityThread.java:140) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.os.Looper.loop(Looper.java:137) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.app.ActivityThread.main(ActivityThread.java:4895) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at dalvik.system.NativeStart.main(Native Method) 
05-09 14:26:31.133: E/AndroidRuntime(4984): Caused by: java.lang.NullPointerException 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at com.example.seattleivf.TabActionBarHomeActivity.onActivityResult(TabActionBarHomeActivity.java:197) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.app.Activity.dispatchActivityResult(Activity.java:5347) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3175) 
05-09 14:26:31.133: E/AndroidRuntime(4984):  ... 11 more 
+0

Возможно, попробуйте aim.putExtra ("return-data", true); прежде чем вы начнете действовать для получения результатов – JRowan

+0

, вы пробовали мое решение? – Daniel

+0

, какая строка - 197, где вы получаете исключение NullPointerException? Столбец указывает, что «Intent1, который вы возвращаете» имеет дополнительные функции, поэтому 'data.getExtras()' не должен возвращать значение null. Возможно ли, что один из ваших вызовов 'findViewById()' возвращает null, и вы получаете NPE при использовании этого? Ваш код выглядит хорошо для меня. Либо добавьте ведение журнала отладки, чтобы увидеть, где проблема, либо выполните ее с помощью отладчика. –

ответ

4

р о Проблема в том, что вы извлечения строки из комплекта и не самого намерения, попробуйте использовать:

String result = data.getStringExtra("result"); 

или просто раскомментировать строку:

//intent.putExtras(bundle); 

и получить строку, как изначально вы TRIE d.

+0

Хорошо, я могу получить результат, но он сбой, когда я пытаюсь получить доступ к представлению позже в моем коде: «ImageButton mFApic = (ImageButton) findViewById (R.id.mInsStepImage); // andrology_home_fragment \t \t \t Просмотреть mHomeFApic = (Показать) findViewById (R.id.maleFA); ' Как получить доступ к представлению, находящемуся в фрагменте, из активности, отображающей его? – Sara

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