web-dev-qa-db-fra.com

Renvoyer le résultat de l'intention lorsque l'activité est fermée par le bouton Précédent

Je commence un nouveau Activityà partir du Activityavec startActivityForResult(intent, requestCode). Je souhaite renvoyer les données à l'original Activitylorsque l'utilisateur appuie sur le bouton Précédent, donc lorsqu'il revient à l'original Activityname__. J'ai essayé deux méthodes:

  • onBackPressed():

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    
        Intent intent = new Intent();
        intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
        setResult(RESULT_OK, intent);
    }
    
  • onPause():

    @Override
    protected void onPause() {
        super.onPause();
    
        Intent intent = new Intent();
        intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
        setResult(RESULT_OK, intent);
    }
    

Malheureusement, aucun d'entre eux n'a fonctionné (resultCoden'est pas RESULT_OK dans onActivityResult()). Quelle est la bonne façon de faire cela? Merci!

13
WonderCsabo

Puisque cette question retient toujours l'attention, je poste une réponse plus correcte que celle que j'avais acceptée il y a deux ans, merci pour MasterGaurav pour le conseil .

@Override
public void onBackPressed() {
    Intent intent = new Intent();
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
    setResult(RESULT_OK, intent);

    super.onBackPressed();
}
7
WonderCsabo

Essaye ça :

@Override
public void onBackPressed() {
   // super.onBackPressed();

    Intent intent = new Intent();
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
    setResult(RESULT_OK, intent);
    finish();
}
23
Pratik Sharma

Essaye ça:

public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
0
Ricky Khatri

Commencez une nouvelle activité à partir de l'activité d'origine avec startActivityForResult(intent, requestCode)

lorsque vous souhaitez renvoyer des données à l'activité d'origine lorsque l'utilisateur appuie sur le bouton Précédent, donc lorsque vous revenez à l'activité d'origine.

@Override
public void onBackPressed() {
    super.onBackPressed();

    Intent intent = new Intent();
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
    setResult(RESULT_OK, intent);
}

si vous voulez récupérer le résultat de l'activité nouvellement ouverte, remplacez simplement 

onActivityResult(int requestCode, int resultCode, Intent data) Méthode de l'activité d'origine

@Override

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

    super.onActivityResult(requestCode, resultCode, data);

}
0
Dixit Patel