2017-03-24 1 views
-2

Je préfère ne pas utiliser le dialogue d'alerte, mais je le ferai si je peux définir le bouton positif pour le bouton que j'ai déjà. Si je ne peux pas faire cela, existe-t-il un moyen de définir des boutons positifs et négatifs dans une boîte de dialogue personnalisée?Puis-je définir un bouton déjà dans mon xml pour être le bouton positif ou négatif dans un dialogue?

+0

Vous réalisez que AlertDialog a la possibilité d'afficher un contenu personnalisé via setContentView https://developer.android.com/reference/android/app/AlertDialog.Builder.html#setView(int)? Ensuite, il suffit de lier le bouton à votre vue afin que vous puissiez écouter le bouton touché. – JoxTraex

+0

@JoxTraex oui je sais, mais je ne pouvais pas dire quel bouton je voulais être le bouton positif. –

Répondre

0

Vous pouvez utiliser la boîte de dialogue d'alerte personnalisée suivante.

public class CustomAlertDialog { 

    public void showDialog(Context activity, String msg, String buttonText, final CustomDialogListener customDialogListener){ //one button with callback 
     final Dialog dialog = new Dialog(activity); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setCancelable(false); 
     dialog.setContentView(R.layout.custom_alert); 

     TextView text = (TextView) dialog.findViewById(R.id.text_alertdialog); 
     text.setText(msg); 

     Button dialogButton = (Button) dialog.findViewById(R.id.btn_alert_dialog); 
     dialogButton.setText(buttonText); 
     dialogButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
       customDialogListener.onPositiveButtonClick(); 
      } 
     }); 

     dialog.show(); 

    } 

    public void showDialog(Context activity, String msg, String positiveButtonText, String negativeButtonText, final CustomDialogListener customDialogListener){//two button with callback 
     final Dialog dialog = new Dialog(activity); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setCancelable(false); 
     dialog.setContentView(R.layout.custom_alert_two_button); 

     TextView text = (TextView) dialog.findViewById(R.id.text_alert_two_dialog); 
     text.setText(msg); 

     Button positiveDialogButton = (Button) dialog.findViewById(R.id.btn_alert_two_dialog_YES); 
     Button negativeDialogButton = (Button) dialog.findViewById(R.id.btn_alert_two_dialog_NO); 
     positiveDialogButton.setText(positiveButtonText); 
     negativeDialogButton.setText(negativeButtonText); 

     positiveDialogButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
       customDialogListener.onPositiveButtonClick(); 
      } 
     }); 

     negativeDialogButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
       customDialogListener.onNegativeButtonClick(); 
      } 
     }); 

     dialog.show(); 

    } 


    public void showDialog(Context activity, String msg, String buttonText){ //simple alert without callback 
     final Dialog dialog = new Dialog(activity); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setCancelable(false); 
     dialog.setContentView(R.layout.custom_alert); 

     TextView text = (TextView) dialog.findViewById(R.id.text_alertdialog); 
     text.setText(msg); 

     Button dialogButton = (Button) dialog.findViewById(R.id.btn_alert_dialog); 
     dialogButton.setText(buttonText); 
     dialogButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 

    } 

} 

Le custom_alert.xml contient un bouton et une textView pour afficher le message. Le custom_alert_two_button.xml contient deux boutons et un textView pour afficher le message.

Le dernier ne contient qu'un seul texte pour afficher le message.