当用户单击我的提交按钮时,为什么会出现这种奇怪的行为?

时间:2011-10-08 04:48:46

标签: android android-alertdialog

我有一个活动 - 一个包含一些TextFields的表单,用户在填写所有字段后单击一个提交按钮。当用户触摸提交按钮时,它应显示警告对话框,然后当用户触摸OK时,其余的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 个答案:

答案 0 :(得分:1)

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(); 
}

答案 1 :(得分:0)

您希望在用户单击“确定”后执行的代码应移至AlertDialog的onClick方法。在finish()之后。否则它将在对话框显示时开始执行。

答案 2 :(得分:0)

如果您只想关闭对话框

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

如果您想关闭对话框和关闭活动

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