2017-09-24 4 views
-1

J'ai un service en cours d'exécution en arrière-plan puis quand il est déclenché par une action envoyer la diffusion à l'activité lorsque l'activité reçoit cette diffusion est affiche une boîte de dialogue, le problème est lorsque le service est déclenché deux ou trois ... etc fois en même temps l'activité affiche trois dialogues les uns sur les autres (dialog3 est en haut de dialog2 en haut de dialog1) J'ai besoin que la boîte de dialogue apparaisse dans le même ordre que celui sur lequel ils sont déclenchés (dialog1 est en haut de dialog2 est au-dessus de dialog3)Faire apparaître une boîte de dialogue sur commande

Répondre

0

mieux vaut arrêter la boîte de dialogue 2 et 3 de montrer jusqu'à ce que le premier est terminé. vous pouvez le faire par une condition comme ci-dessous: (plus comme un code psudo)

public void processBroadcast(BroadcastModel broadcastModel) 
{ 
    if(!Const.isAnyDialogShowing) 
    { 
    CustomDialog dialog=new CustomDialog(broadcastModel); 
    dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
     @Override 
     public void onDismiss(DialogInterface dialog) { 
      Const.isAnyDialogShowing = false; 
      if(broadcastList.size > 0) 
      { 
       broadcastModel newBroadcastModel = broadcastList.remove(0); 
       processBroadcast(newBroadcastModel); 
      } 
     } 
    }); 
    Const.isAnyDialogShowing = true; 
    dialog.Show(); 
} 
else 
{ 
    broadcastList.add(broadcastModel); 
} 
} 

cette façon, ils seront affichés avec le même ordre que vous voulez.