Je n'arrive pas à fermer mon dialogue d'alerte. J'utilise un gonfleur de mise en page pour créer le dialogue, je ne sais donc pas comment je ferais pour fermer la chose une fois que j'en aurai fini. 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 terminer, car cela ferme la vue liste depuis laquelle la boîte de dialogue d'alerte est lancée et les appels dialog.dismiss ne sont pas disponibles pour moi.
Que pensez-vous que je devrais faire pour résoudre ce problème?
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();
fais-le comme ça,
add_item.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
dialog.dismiss();
}
});
Essaye ça:
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 AlertDialog.Builder pour "créer" le dialogue d'alerte lui-même. Appelez ensuite la méthode create () sur l'objet AlertDialog.Builder. Cette méthode retourne un objet AlertDialog, ce qui vous permet d’appeler la méthode rejeter ().
Vous ne devriez pas avoir à le créer plusieurs fois, ni utiliser aucun objet DialogInterface. Cela fonctionne pour moi. Faites-moi savoir comment ça se passe pour vous.
J'ai modifié votre code plz check ..
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();
Vient d'ajouter
final AlertDialog Dial = alertDialog.create (); et changer dialog.setView (mise en page); à Dial.setView (mise en page);
maintenant, il suffit d'appeler Dial.dismiss (); in onclick listener .. fonctionne bien pour moi.
utilisez 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 créez le fichier custom.xml, puis collez 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>
source: https://www.mkyong.com/Android/android-custom-dialog-example/
et si vous n'aimez pas le code ci-dessus, consultez le lien ci-dessous: http://thedeveloperworldisyours.com/Android/prevent-alertdialog-closing-button-clicked/
Vous devez implémenter DialogInterface.OnClickListener plutôt que View.OnClickListener. alors dialog.dismiss () sera disponible.
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
dialog.dismiss();
}
}
Vous obtenez une erreur, essayez ce code
dialog.setView(layout);
final AlertDialog alertDialog = dialog.create();
add_item.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
if (alertDialog != null && alertDialog.isShowing()) {
alertDialog.dismiss();
}
}
});
alertDialog.show();
Essayez dialog.cancel (); dans votre auditeur onclick. Ça devrait marcher.