2013-12-23 2 views
0

Я делаю AlertDialog перед некоторым действием, и AlertDialog не будет отменен после действия.Android Alert Dialog не увольняет

public void onClick(View v) { 
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
        LayoutInflater inflater = getActivity().getLayoutInflater(); 
        View pbview = inflater.inflate(R.layout.progress_bar, null); 
        builder.setView(pbview); 

        builder.setCancelable(true); 
        builder.create().show(); 
//do some stuff 

builder.create().dismiss(); 
} 

Кстати, у моего AlertDialog нет кнопок. Я хочу сделать AlertDialog без кнопки и автоматически отклоняться, когда действие закончено.

EDIT: я изменил имя экземпляра.

+2

использовать тот же экземпляр AlertDialog, на котором вы вызываете метод показа для смещать в вас случай попробовать как: Диалог диалога = dlgAlert.create(). Show(); dialog.dismiss(); ' –

+0

do u хотите убрать диалоговое окно после завершения какого-либо действия, я прав? если да, значит попробовать асинхронную задачу в android – Mohan

ответ

1

согласен с @ ρяσѕρєя K сделать экземпляр AlertDialog и изменить код, как.

AlertDialog alert ; 

alert = dlgAlert.create(); 
     alert.show(); 
     //do some stuff 

       alert.dismiss(); 

и если вы хотите диалог на заказ, то вы можете использовать такой код: -

final Dialog dialog = new Dialog(context); 
     dialog.setContentView(R.layout.custom); 
     dialog.setTitle("Title..."); 

     // set the custom dialog components - text, image and button 


     Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK); 
     // if button is clicked, close the custom dialog 
     dialogButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 
     } 
    }); 
+0

Logcat говорит: указанный ребенок уже имеет родитель. Сначала вы должны вызвать removeView() родителя ребенка. – Rixwen

+0

Я редактирую свой ответ, я не заметил, что вы раздуваете представление. вы можете использовать метод setContentView(). –

+0

Имеет ли ** AlertDialog.Builder ** ** setContentView(); ** метод ?? –

0

только

dlgAlert.dismiss(); 

Вот это :)

+0

Метод reject() не определен для типа AlertDialog.Builder – Rixwen

0

попробовать что:

dlgAlert.dismiss(); 

или

dlgAlert.cancel(); 
0

Это создаст AlertDialog вы хотите ...

AlertDialog alertDialog = dlgAlert.create(); 

Тогда попробуйте show, dismiss на вашем AlertDialog

alertDialog.show(); 
alertDialog.dismiss(); 
+0

его работа, если я использовал setMessage, но я использую setView. Logcat сказал, что указанный ребенок уже имеет родителя. Сначала вы должны вызвать removeView() родителя ребенка. – Rixwen

+0

Вы добавляете представление к AlertDialog дважды .. проверьте этот ..http: //stackoverflow.com/questions/3674413/the-specified-child-already-has-a-parent –