Fermer un dialogue d'alerte personnalisé sur le bouton cliquer

j'ai du mal à fermer mon dialogue d'alerte. J'utilise un gonfleur de mise en page pour faire le dialogue, donc je ne suis pas sûr de savoir comment je pourrais fermer la chose après que j'en ai fini avec elle. Le Code est ci-dessous:

AlertDialog.Builder dialog = new AlertDialog.Builder(AddData.this);
DialogInterface dia = new DialogInterface();

//Create a custom layout for the dialog box
LayoutInflater inflater = (LayoutInflater)AddData.this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.add_rep_1_set, parent, false);

TextView title = (TextView)layout.findViewById(R.id.rep_1_title);
Button add_item = (Button)layout.findViewById(R.id.add_button);

add_item.setOnClickListener(new OnClickListener()
{
        @Override
        public void onClick(View v)
        {
        //Need this to close the alert dialog box
        }
});

title.setText(workout_items[position]);
dialog.setView(layout);
dialog.show();

Je ne peux pas appeler finish, car cela ferme la fenêtre listview à partir de laquelle la boîte de dialogue alert est lancée, et la boîte de dialogue.rejeter les appels ne sont pas disponible pour moi.

Que pensez-vous que je devrais faire pour réparer ça?

23
demandé sur Daniel 2011-04-19 11:59:49

7 réponses

AlertDialog.Builder dialog = new AlertDialog.Builder(AddData.this);
DialogInterface dia = new DialogInterface();

//Create a custom layout for the dialog box
LayoutInflater inflater = (LayoutInflater)AddData.this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.add_rep_1_set, parent, false);

TextView title = (TextView)layout.findViewById(R.id.rep_1_title);
Button add_item = (Button)layout.findViewById(R.id.add_button);

title.setText(workout_items[position]);
dialog.setView(layout);

AlertDialog alertDialog = dialog.create();

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


alertDialog.show();
27
répondu Pasha 2011-04-19 08:12:18

le faire comme cela,

add_item.setOnClickListener(new OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                        dialog.dismiss();
                }
            });
16
répondu Hades 2011-04-19 08:09:45

essaye ceci:

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    LayoutInflater inflater = getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.brush_opts_dialog,null);

    builder.setView(dialogView);


    closeBtn = (Button)dialogView.findViewById(R.id.close_btn);


   final AlertDialog dialog = builder.create();

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

    dialog.show();

vous devez utiliser L'AlertDialog.Builder pour "construire" le dialogue D'alerte lui-même. Ensuite, appelez la méthode create() sur l'AlertDialog.Constructeur de l'objet. Cette méthode renvoie un objet AlertDialog, qui vous permet d'appeler dismiss().

Vous ne devriez pas avoir à le créer plusieurs fois, ni utiliser d'objets DialogInterface. Cela fonctionne pour moi. Laissez-moi savoir comment ça se passe pour vous.

11
répondu Nlinscott 2014-07-05 01:27:41

j'ai modifié votre vérification de code plz..

   AlertDialog.Builder dialog = new AlertDialog.Builder(AddData.this);
    DialogInterface dia = new DialogInterface();

    //Create a custom layout for the dialog box
    LayoutInflater inflater = (LayoutInflater)AddData.this.getSystemService(LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.add_rep_1_set, parent, false);

    TextView title = (TextView)layout.findViewById(R.id.rep_1_title);
    Button add_item = (Button)layout.findViewById(R.id.add_button);



    final AlertDialog Dial = alertDialog.create();
    title.setText(workout_items[position]);
    Dial.setView(layout);

    AlertDialog alertDialog = dialog.create();

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


    Dial.show();

Ajouté

finale AlertDialog Cadran = alertDialog.créer(); et le changement boîte de dialogue.setView(mise en page); de Composer.setView(mise en page);

maintenant appelez simplement Composer.rejeter(); onclick auditeur.. fonctionne très bien pour moi.

3
répondu Abdus Salam 2013-02-25 10:06:20

utiliser ce code dans votre classe:

Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom);
((Button) dialog.findViewById(R.id.button))
   .setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        dialog.dismiss();
    }
});
dialog.show();

et de créer sur mesure.xml, puis coller ce code à l'intérieur:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" Ok "/>
</RelativeLayout>
https://www.mkyong.com/android/android-custom-dialog-example/

et si vous n'aimez pas le code ci-dessus, voir lien ci-dessous: http://thedeveloperworldisyours.com/android/prevent-alertdialog-closing-button-clicked/

1
répondu سعید .م 2018-01-12 18:19:19

Essayez de dialogue.annuler(); dans ton onclick auditeur. Il devrait fonctionner.

0
répondu Ungureanu Liviu 2011-04-19 08:07:13

vous devez implémenter DialogInterface.OnClickListener plutôt que de voir.OnClickListener. ensuite, la boîte de dialogue.rejeter() sera disponible.

new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
       dialog.dismiss();
}
}
0
répondu nexDev 2017-06-22 16:41:14