2009-05-25 13 views
2

J'ai une application qui ouvre une autre classe en utilisant l'intention:problème Intent, la valeur de retour (Android)

 
private void createRepository(){ 
     Intent j = new Intent(this, Repository.class); 
     startActivityForResult(j, ACTIVITY_CREATE); 
    } 

En Repository.class nous avons la méthode onActivityResult:

 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
     super.onActivityResult(reqCode, resultCode, data); 

     switch (reqCode) { 
     case (PICK_CONTACT) : 
      if (resultCode == Activity.RESULT_OK) { 
      Uri contactData = data.getData(); 
      c = managedQuery(contactData, null, null, null, null); 
      if (c.moveToFirst()) { 
       //String name = c.getString(c.getColumnIndexOrThrow(People.NAME)); 
       num = c.getString(c.getColumnIndexOrThrow(People.NUMBER)); 

      }  

      }  
     break; 
     } 
     finish(); 
    } 

I Je ne sais pas comment je peux retourner la valeur de num à la première classe (qui crée Repository.class). Nous vous remercions de votre aide. Michaël

Répondre

2

Je pense que vous avez confondu les directions.

Dans la classe Repository, vous devez setResult() avant d'appeler finish. Pour des données supplémentaires, vous pouvez putExtra() des données.

Par exemple, définissez votre résultat dans la fonction onCreate().

Dans votre classe appelante (celle qui démarre Repository), vous écrasez onActivityResult(int requestCode, int resultCode, Intent data) et obtenez des données avec data.getBundleExtra().

La référence des androïdes pour Intent et Activité a de bonnes descriptions et les exemples contiennent également un exemple ReceiveResult et SendResult.

+0

Merci pour votre réponse. Enfin, j'ai utilisé ce post pour résoudre mon problème: http://stackoverflow.com/questions/768969/passing-a-bundle-on-startactivity –

Questions connexes