-6

J'ai un fragment à partir de laquelle j'appelle l'activité et une fois la tâche terminée, je la dépose & revient à l'écran de fragmentation. En cela, j'ai besoin de récupérer des données de l'activité que j'essaie de gérer en utilisant onActivityResult mais en obtenant toujours le code de résultat -1.onActivityResult renvoie le code de résultat toujours -1

Fragment de code:

//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); 

suivant est

//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 
      } 
     } 

Puis

//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(); 

Je veux savoir pourquoi il ne retourne pas le code de résultat réel qui est par exemple 334.

+0

Désolé pour prendre votre temps. Mine erreur dans le code, mais l'a réparé maintenant. – VVB

+0

On dirait que M. Borad a donné une bonne réponse ci-dessous, s'il vous plaît répondez à lui. – halfer

Répondre

0

En raison de votre Constants.RESPONSE_CODE_UPDATE_PROFILE est -1;

+0

Déjà mentionné, son 334 – VVB

0

Déplacez votre méthode onActivityResult de votre fragment vers l'activité qui contient le fragment. Cela devrait fonctionner de cette façon.

1

Pensez comme vous avez trois activités A, B et C. Maintenant, de l'activité A l'appel startActivityForResult B et C.

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

Et

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

Sur l'activité B

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

Activité C

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

Enfin sur l'activité A onActivityResult()

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

requestCode onlly vous aider à identifier que l'activité que vous venez.

La seule chose que vous avez à faire est de mettre l'intention.

Sur l'activité B

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

Et l'activité A

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