【问题标题】:Why do I get this strange behavior when the user clicks my submit button?当用户单击我的提交按钮时,为什么会出现这种奇怪的行为?
【发布时间】:2011-10-08 04:48:46
【问题描述】:

我有一个活动 - 一个带有一些文本字段的表单,用户在填写所有字段后单击提交按钮。当用户点击提交按钮时,它应该会显示一个警告对话框,然后当用户点击 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(); 
}

我得到了奇怪的输出。当我单击提交/完成按钮时,它会向我显示警报对话框,但在我按下“确定”按钮之前它会消失。为什么?

【问题讨论】:

    标签: android android-alertdialog


    【解决方案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(); 
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        如果您只想关闭对话框

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

        如果您希望同时关闭对话框和关闭活动

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-31
          • 2020-12-27
          • 2010-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多