该代码不起作用(答案变量无法从侦听器中设置,实际上甚至不能编译)
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"); } }; }}总结
以上是内存溢出为你收集整理的Android Confirmation对话框返回true或false全部内容,希望文章能够帮你解决Android Confirmation对话框返回true或false所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)