-6

У меня есть фрагмент, из которого я вызываю активность, и после завершения задачи удаляю его & возвращается на экран фрагмента. В этом случае мне нужно вернуть данные из активности, которые я пытаюсь обработать, используя onActivityResult, но получая resultcode всегда -1.onActivityResult retuens resultcode always -1

фрагмент кода:

//call to next screen, below code is written inside alert dialog 

Intent intentAddProfile = new Intent(getActivity(), UpdateMyProfilectivity.class); 
startActivityForResult(intentAddProfile, Constants.REQUEST_CODE_UPDATE_PROFILE); 

Следующая является

//onactivityresult handling, inside onactivityresult() method 

if (requestCode == Constants.REQUEST_CODE_UPDATE_PROFILE) { 
      if (resultCode == Constants.RESPONSE_CODE_UPDATE_PROFILE) { 
       Log.v("Result Code :", "" + resultCode); //getting always -1 
      } 
     } 

Тогда

//Next screen code after finishing task 
Intent backIntent = new Intent(); 
backIntent.putExtra("dummy", "ok"); 
setResult(Constants.RESPONSE_CODE_UPDATE_PROFILE, backIntent); 
Log.v("RLC U : ", "" + Constants.RESPONSE_CODE_UPDATE_PROFILE); //sends correct e.g. 334 
finish(); 

Я хочу знать, почему он не возвращает фактический код результата, который, например, 334.

+0

Извините за то время. Ошибка Mine в коде, но теперь она исправлена. – VVB

+0

Похоже, мистер Борад дал хороший ответ ниже, пожалуйста, ответьте ему. – halfer

ответ

0

Из-за вашего Constants.RESPONSE_CODE_UPDATE_PROFILE -1;

+0

Уже упоминалось, что его 334 – VVB

0

Переместите метод onActivityResult из вашего фрагмента в Activity, который содержит фрагмент. Это должно сработать.

1

Подумайте, как у вас есть три активности A, B и C. Теперь от активности Вызывающая startActivityForResult для B и C.

Intent intentAddProfile = new Intent(getActivity(), B.class); 
startActivityForResult(intentAddProfile, 2); 

И

Intent intentAddProfile = new Intent(getActivity(), C.class); 
startActivityForResult(intentAddProfile, 3); 

На активности В

setResult(requestCode, intent); // requestCode = 2; 

Деятельность C

setResult(requestCode, intent); // requestCode = 3; 

Наконец на активности onactivityresult()

if (requestCode == 2) { 
// comming back from activity B. 
} 
else if (requestCode == 3) 
{ 
// comming back from activity C. 
} 

requestCode Onlly поможет вам определить, что какую деятельность вы откуда.

Единственное, что вам нужно сделать, это поместить намерение.

На активности В

Intent backIntent = new Intent(); 
backIntent.putExtra("value", 334); 
setResult(2, backIntent); 

и активность

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 2) { 
      final int value= intent.getIntExtra("value", 0); 
     } 
    }