2013-12-26 2 views
11

Есть много людей, которые столкнулись с одной и той же ошибкой в ​​stackoverflow, но я не смог найти соответствующую резолюцию в этих сообщениях. My MainActivity начинает новую активность (SecondActivity) с помощью startActivityForResult(); Затем SecondActivity возвращает некоторые данные с помощью onBackPressed(); и putExtra();Ошибка отправки результата ResultInfo

Выписка из MainActivity.java:

public void addNewNote(View v){ 

    Intent intent = new Intent(this, SecondActivity.class); 
    intent.putExtra("Source", "NEW"); 
    startActivityForResult(intent, 1); //1 is the result code 

} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    Log.v("TAG", data.getStringExtra("Note")); 
     if (requestCode == 1) { 

     if(resultCode == RESULT_OK){   
      listItems.add(data.getStringExtra("Note")); 
      Log.v("TAG", data.getStringExtra("Note")); 
      adapter.notifyDataSetChanged(); 
      listView.invalidateViews(); 
     } 
     if (resultCode == RESULT_CANCELED) { 

     } 
     } 

} 

Выписка из SecondActivity.java:

@Override 
public void onBackPressed() { 

    super.onBackPressed(); 
    if (mainTextField.getText() != null){ 
     Intent returnIntent = new Intent(); 
     returnIntent.putExtra("Note",mainTextField.getText()); 
     setResult(RESULT_OK, returnIntent);  
     finish(); 
    } else { 
     Intent returnIntent = new Intent(); 
     setResult(RESULT_CANCELED, returnIntent);   
     finish(); 
    } 

} 

Logcat:

Logcat

+2

Что написано на линии нет. 56 в MainActivity? –

+0

Log.v ("TAG", data.getStringExtra ("Примечание")); – timeshift117

+0

попробуйте .toString в обоих случаях, вы получаете 'null' –

ответ

14

Попробуйте this-

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
     if (requestCode == 1 && data != null) 
     { 
     Log.v("TAG", data.getStringExtra("Note")); 
     if(resultCode == RESULT_OK) 
     {   
      listItems.add(data.getStringExtra("Note")); 
      Log.v("TAG", data.getStringExtra("Note")); 
      adapter.notifyDataSetChanged(); 
      listView.invalidateViews(); 
     } 
     if (resultCode == RESULT_CANCELED) 
     { 

     } 
     } 
} 
+0

в порядке, это останавливает ошибку при запуске, однако данные кажутся всегда нулевыми, поэтому они все еще не работают, спасибо, хотя – timeshift117

+0

, когда вы помещаете значение в класс «SecondActivity», сделайте это так: returnIntent.putExtra («Примечание», . mainTextField.getText() ToString()); –

+0

yeh Я просто попробовал это, вот как он сейчас, все еще не работает, также я знаю, что этот оператор журнала выдает правильную строку из текстового поля, я проверил. Так что что-то не так с намерением отправлено обратно на onActivityResult – timeshift117

1

Проблема у меня заключалась в том, что я использовал getIntent(), таким образом получая намерение текущей деятельности, в которой я был.

Когда я переключился на data.getStringExtra() это сработало. Любительская ошибка ...

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