2017-07-22 3 views
-1

Je travaille sur cela depuis une heure, je ne peux pas comprendre pourquoi je ne peux pas rejeter la boîte de dialogue même après avoir cliqué sur l'un des boutons. Si je mets b.dismiss(), après les boutons la boîte de dialogue ne s'affiche même pas.Comment peut-on ignorer cette boîte de dialogue d'alerte?

private AlertDialog b; 

    // custom dialog 
    AlertDialog.Builder dialogBuilder = new 
    AlertDialog.Builder(MapsActivity.this); 
    LayoutInflater inflater = MapsActivity.this.getLayoutInflater(); 
    final View dialogView = inflater.inflate(R.layout.custom_dialog, null); 
    dialogBuilder.setView(dialogView); 

    Button reject = (Button) dialogView.findViewById(R.id.reject_btn); 
    Button accept = (Button) dialogView.findViewById(R.id.accept_btn); 

    b = dialogBuilder.create(); 
    b.show(); 


    accept.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      b.dismiss(); 



     } 
    }); 

    reject.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      b.dismiss(); 


     } 
    }); 

J'ai essayé de rejeter dans

dialogBuilder.setPositiveButton("Done", new 
    DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     //do something with edt.getText().toString(); 
    } 
}); 
dialogBuilder.setNegativeButton("Cancel", new 
    DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     //pass 
    } 
}); 

Cela n'a pas

Si vous pouvez ramasser quelque chose que je manqué votre aide serait très appréciée!

J'ai remarqué que si je le rejette à peu près 60 fois, ça veut dire que mon code crée un dialogue 60 fois, quelle en serait la cause?

modifier

+0

Tout ce que vous devez nous faire 'dialog.dismiss()' dans les CLICK auditeurs –

+0

Que diriez-vous 'dialog.cancel()' ? – TWL

Répondre

0

Je ne sais pas où vous avez écrit votre code pour lancer le dialogue. J'ai répliqué votre code. Et cela fonctionne comme prévu.

public class MainActivity extends AppCompatActivity { 

    private AlertDialog b; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // custom dialog 
     AlertDialog.Builder dialogBuilder = new 
       AlertDialog.Builder(this); 
     LayoutInflater inflater = getLayoutInflater(); 
     final View dialogView = inflater.inflate(R.layout.custom_dialog, null); 
     dialogBuilder.setView(dialogView); 

     Button reject = (Button) dialogView.findViewById(R.id.reject_btn); 
     Button accept = (Button) dialogView.findViewById(R.id.accept_btn); 

     b = dialogBuilder.create(); 
     b.show(); 


     accept.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       b.dismiss(); 
      } 
     }); 

     reject.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       b.dismiss(); 
      } 
     }); 
    } 
} 

Et ci-dessous est le XML. Encore une fois un très basique pour correspondre à votre code

custom_dialog.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Button 
     android:layout_width="wrap_content" 
     android:id="@+id/reject_btn" 
     android:text="Reject" 
     android:layout_height="wrap_content" /> 
    <Button 
     android:layout_width="wrap_content" 
     android:id="@+id/accept_btn" 
     android:text="Accept" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 
+0

Merci, cela aide beaucoup – krumpking

+0

Pas de soucis. Si cela vous aide à résoudre votre problème, acceptez-le comme une réponse. Au moins un upvote serait apprécié –

1

essayer cette

 dialogBuilder.setPositiveButton("Done", new 
    DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     //do something with edt.getText().toString(); 
     dialogBuilder.dismiss(); 
     // or 
     dialogBuilder.cancel(); 
    } 
}); 
dialogBuilder.setNegativeButton("Cancel", new 
    DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
    dialogBuilder.dismiss(); 
     // or 
    dialogBuilder.cancel(); 
    } 
}); 
+0

La classe dialogBuilder n'a pas de méthode ignorer et annuler Merci – krumpking

1

essayez ceci pour fermer la boîte de dialogue

dialogBuilder.setPositiveButton("Done", new 
    DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      //do something with edt.getText().toString(); 
      dialog.dismiss(); 
     } 
}); 

dialogBuilder.setNegativeButton("Cancel", new 
    DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      dialog.dismiss(); 
     } 
}); 
+0

Ça n'a pas fonctionné, c'est vraiment bizarre pour moi parce que vous pouvez le voir annuler presque mais il réapparaît – krumpking

0

essayer cette

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("message"); 
     builder.setPositiveButton("Yes", new 
DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     dialog.dismiss(); 

     }); 

     builder.setNegativeButton("NO",new 
DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     dialog.dismiss(); 
     }); 
     builder.show(); 
+0

Je reçois une erreur avant que je l'exécute, que lambda les expressions ne sont pas autorisées à ce niveau de langue – krumpking

+0

Cela est fait en Java 8 donc vous obtenez ces erreurs. Maintenant, j'utilise un code simple s'il vous plaît vérifier ma réponse mise à jour. –

+0

Ne fonctionne toujours pas – krumpking