似乎没有简单的方法来获取一个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 举报,一经查实,本站将立刻删除。