微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Confirmation对话框返回true或false

似乎没有简单的方法获取一个Alert对话框来返回一个简单的值.
代码不起作用(答案变量无法从侦听器中设置,实际上甚至不能编译)
public static boolean Confirm(Context context) {
    boolean answer;
    AlertDialog dialog = new AlertDialog.Builder(context).create();
    dialog.setTitle("Confirmation");
    dialog.setMessage("Choose Yes or No");
    dialog.setCancelable(false);
    dialog.setButton(DialogInterface.BUTTON_POSITIVE,"Yes",new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int buttonId) {
            answer = true;
        }
    });
    dialog.setButton(DialogInterface.BUTTON_NEGATIVE,"No",int buttonId) {
            answer = false;
        }
    });
    dialog.setIcon(android.R.drawable.ic_dialog_alert);
    dialog.show();
    return answer;
}

注意:重要的是该方法是自包含的,即它不依赖于外部的变量或构造.只要打电话给你,得到你的答案,是真的还是假的.

那么该怎么办?这种简单的返回真假愿望似乎比它应得的要复杂得多.

此外,setButton方法的格式如下:

dialog.setButton(int buttonId,String buttonText,Message msg)

但是不清楚如何使用它,meesage发送到哪里,使用哪个处理程序给谁?

解决方法

在这个论坛上有类似的问题,但是我终于得到了我的答案.
我在那篇文章中的问题是如何创建单独的确认对话框类,他可以通过其他类或活动来访问,所以使用该确认对话框类,我们不需要编写长编码.

这是我的答案.

首先你必须创建DialogHandler.java

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import src.app.R;

public class DialogHandler {
    public Runnable ans_true = null;
    public Runnable ans_false = null;

    // Dialog. --------------------------------------------------------------

    public boolean Confirm(Activity act,String Title,String ConfirmText,String CancelBtn,String OkBtn,Runnable aProcedure,Runnable bProcedure) {
        ans_true = aProcedure;
        ans_false= bProcedure;
        AlertDialog dialog = new AlertDialog.Builder(act).create();
        dialog.setTitle(Title);
        dialog.setMessage(ConfirmText);
        dialog.setCancelable(false);
        dialog.setButton(DialogInterface.BUTTON_POSITIVE,OkBtn,new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int buttonId) {
                         ans_true.run();
                    }
                });
        dialog.setButton(DialogInterface.BUTTON_NEGATIVE,CancelBtn,int buttonId) {
                        ans_false.run();
                    }
                });
        dialog.setIcon(android.R.drawable.ic_dialog_alert);
        dialog.show();
        return true;
    }
}

这就是将其称为另一个类的例子

public class YourActivity extends Activity {
    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findViewById(R.id.button1).setonClickListener(myclick);
    }

    public final Button.OnClickListener myclick = new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            doclick();
        }
    };

    public void doclick() {
        DialogHandler appdialog = new DialogHandler();
        appdialog.Confirm(this,"Message title","Message content","Cancel","OK",aproc(),bproc());
    }

    public Runnable aproc(){
        return new Runnable() {
            public void run() {
                Log.d("Test","This from A proc");
            }
          };
    }

    public Runnable bproc(){
        return new Runnable() {
            public void run() {
                Log.d("Test","This from B proc");
            }
          };
    }


}

原文地址:https://www.jb51.cc/android/310867.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐