2017-03-02 1 views
-1

Je commence une activité avec startActivityForResult comme celui-ciAndroid: onActivityResult est pas appelé pour différentes resultcodes

@Override 
public void onEmptyViewClicked(Calendar time) { 
    Bundle bundle = new Bundle(); 
    bundle.putSerializable("time",time); 
    bundle.putInt("fragmentId",1); 

    Intent intent = new Intent(this,AddEventActivity.class); 
    intent.putExtras(bundle); 
    startActivityForResult(intent,1); 
} 

et AddEventActivity i ajouter des fragments en fonction du fragment id.The premier fragment ajouter des événements et second fragment supprimer events.onAddEvent et onDeleteEvent i setResult avec des données appropriées comme celui-ci

@Override 
public void onAddEventClicked(Bundle bundle) { 
    Intent intent = new Intent(this,MainActivity.class); 
    intent.putExtras(bundle); 
    setResult(1,intent); 
    finish(); 
} 

@Override 
public void eventDelete(Events event) { 
    Bundle bundle = new Bundle(); 
    bundle.putSerializable("deleteEvent",event); 

    Intent newIntent = new Intent(this,MainActivity.class); 
    newIntent.putExtras(bundle); 
    setResult(2,newIntent); 
    finish(); 
} 

code onActivityResult est quelque chose comme ça

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(resultCode == 1 && data != null){ 
     if(requestCode == 1){ 

     } 
    }else if(resultCode == 2){ 

    } 
} 
} 

Maintenant, onActivityResult reçoit l'événement onAdding appelé, mais pas lors de la suppression de la méthode event.eventDelete qui est appelée, mais qui ne déclenche pas onActivityResult.Quel pourrait être le problème? Merci.

MISE À JOUR
Je mets un débogage à première ligne onActivityResult mais débogueur ne s'y arrête pas.

+0

êtes-vous que 'eventDelete' s'appelle du tout? – pskink

+0

oui j'ai vérifié avec le débogueur .. –

+0

poster votre code d'activité appelé ('AddEventActivity') – pskink

Répondre

2
startActivityForResult(intent,1); 

ici 1 est votre requestCode

setResult(1,intent); 

ici 1 est votre resultCode

vous définissez mêmes resultcode pour deux événements

changer votre onActivityResult à

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

    if (resultCode == 1) { //add event 
     if (requestCode == 1) { 
      if (data != null) { 

       if (data.getExtras().containsKey("deleteEvent")) { 

       } else { 
       } 
      } 
     } 
    } else if (resultCode == 2) { //delete event 
     //write code 
    } 
} 
+0

merci de souligner que ... –

+0

nope son ne fonctionne pas.J'ai mis un débogage à la première ligne dans onActivityResult mais le débogueur ne s'arrête pas là .. –

+0

nous l'avons appelé comme: 'setResult (2, newIntent);' dans votre événement de suppression? – rafsanahmad007

-1

vous devez ajouter RESULT_OK et de valider cette resultCode:

Intent returnIntent = new Intent(); 
returnIntent.putExtra("returndata"); 
setResult(Activity.RESULT_OK, returnIntent); 
finish(); 

après, u besoin d'ajouter la validation dans votre méthode onActivityResult ...

 if(requestCode == CODE_REQUEST){ 
    if(resultCode == Activity.RESULT_OK){ 
     //do something here 
     }{ 
     //catch cancel result 
    } 
    }