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?
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();
le faire comme cela,
add_item.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
dialog.dismiss();
}
});
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.
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.
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/
Essayez de dialogue.annuler(); dans ton onclick auditeur. Il devrait fonctionner.
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();
}
}