Почему я получаю это странное поведение, когда пользователь нажимает кнопку «Отправить»? - PullRequest
0 голосов
/ 08 октября 2011

У меня есть действие - форма с некоторыми TextFields, и пользователь нажимает кнопку отправки после заполнения всех полей.Когда пользователь касается кнопки отправки, он должен отобразить диалоговое окно с предупреждением, а затем, когда пользователь нажимает кнопку ОК, будет выполняться оставшаяся часть кода OnClicklistener.В настоящее время мой код выглядит примерно так:

слушатель для кнопки подтверждения / завершения:

private final OnClickListener mFinishListener = new OnClickListener() {
    public void onClick(View v) {

    displayAlert();

    // Some other things to do here. Lets say showing some other activity   

};

Код диалогового окна оповещения:

public void displayAlert(){
    new AlertDialog.Builder(this).setMessage("Hi , I am Alert Dialog")  
    .setTitle("My Alert")  
    .setCancelable(true)  
    .setNeutralButton(android.R.string.ok,  
       new DialogInterface.OnClickListener() {  
       public void onClick(DialogInterface dialog, int whichButton){
           finish();
       }  
       })  
    .show(); 
}

Я получаю странный вывод.Когда я нажимаю кнопку отправки / завершения, отображается диалоговое окно с предупреждением, но оно исчезает, прежде чем я нажимаю кнопку «ОК».Почему?

Ответы [ 3 ]

1 голос
/ 08 октября 2011
Hi this is working but don't write  finish(); after displayAlert(); function.

private final OnClickListener mFinishListener = new OnClickListener() {
@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
         displayAlert();
         //your code // don't write finish(); here if you write
    }
};

public void displayAlert(){
    new AlertDialog.Builder(this).setMessage("Hi , I am Alert Dialog")  
    .setTitle("My Alert")  
    .setCancelable(true)  
    .setNeutralButton(android.R.string.ok,  
       new DialogInterface.OnClickListener() {  
       public void onClick(DialogInterface dialog, int whichButton){
           finish();
       }  
       })  
    .show(); 
}
0 голосов
/ 08 октября 2011

Если вы хотите закрыть только диалог

   public void onClick(DialogInterface dialog, int whichButton){
       dialog.dismiss();
   } 

Если вы хотите закрыть и диалог, и закрыть действие

   public void onClick(DialogInterface dialog, int whichButton){
       dialog.dismiss();
       finish();
   } 
0 голосов
/ 08 октября 2011

Код, который вы хотите выполнить после нажатия кнопки «ОК», должен быть перемещен в метод onClick в AlertDialog.Сразу после finish().В противном случае он начнет выполняться, пока отображается диалоговое окно.

...