Закрытие диалогового окна настраиваемого предупреждения при нажатии кнопки
У меня возникли проблемы с закрытием диалогового окна предупреждения. Я использую разметку компоновки, чтобы сделать диалог, поэтому я не уверен, как я собираюсь закрыть это после того, как я покончу с этим. Код ниже:
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();
Я не могу завершить вызов, потому что это закрывает список, из которого открывается диалоговое окно предупреждения, а вызовы dialog.dismiss недоступны мне.
Как вы думаете, что я должен сделать, чтобы исправить это?
Ответы
Ответ 1
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();
Ответ 2
сделайте это так,
add_item.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
dialog.dismiss();
}
});
Ответ 3
Попробуйте следующее:
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();
Вы должны использовать AlertDialog.Builder для "создания" диалогового окна оповещений. Затем вызовите метод create() в объекте AlertDialog.Builder. Этот метод возвращает объект AlertDialog, который позволяет вам вызвать функцию увольнения().
Вам не нужно создавать его несколько раз и не использовать любые объекты DialogInterface. Это работает для меня. Дайте мне знать, как это происходит для вас.
Ответ 4
Я изменил ваш код 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();
Только что добавлено
final AlertDialog Dial = alertDialog.create(); и изменение dialog.setView(компоновка);в Dial.setView(компоновка);
теперь просто вызывайте Dial.dismiss(); в onclick listener..
отлично работает для меня.
Ответ 5
используйте этот код в своем классе:
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();
и создайте custom.xml, затем вставьте этот код внутри него:
<?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/
и если вам не нравится код выше, см. ссылку ниже: http://thedeveloperworldisyours.com/android/prevent-alertdialog-closing-button-clicked/
Ответ 6
Попробуйте dialog.cancel(); в вашем слушателе onclick.
Он должен работать.
Ответ 7
Вам нужно реализовать DialogInterface.OnClickListener, а не View.OnClickListener. то будет доступен диалог .dismiss().
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
dialog.dismiss();
}
}
Ответ 8
Вы получаете ошибку, попробуйте этот код
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();
Ответ 9
Попробуй это:
btn_go_anyway.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
getDialog().dismiss();
}
});