我是Java / Android开发的新手,我习惯在学习新平台时创建一个工具库,在那里我将函数用于非常常见的任务。在这种情况下,一个OK / Cancel-Dialog。
我想要实现的是这样的:
if (tools.ask("Are you sure")) {
//do something
}
else {
//don't do it
}
tools.ask()应该创建并显示一个OK / Cancel-Dialog,如果用户单击OK返回true,否则(取消点击,后退按钮,应用程序终止,等等)返回false。
我查看了AlertDialog,我知道如何使用X行代码实现它。但由于这是事件驱动的,我不知道如何将它放在具有返回值的方法中。
甚至可能吗?
提前致谢!
答案 0 :(得分:2)
您不应该尝试创建一个阻止和等待结果的方法,因为您将阻止UI线程,然后操作系统将向用户报告您的应用程序没有响应。
您的用户界面应该是事件驱动的。
答案 1 :(得分:2)
您需要拥有实现事件侦听器的类。当UI事件发生时,将调用由事件侦听器指定的这些实现的方法,这不会导致UI线程挂起。
例如
public class MyActivity extends Activity implements OnClickListener
然后实现方法
public void onClick(View v) {
int id = v.getId();
if (id == R.id.widget_id){
//Do something
}
}
您还需要将侦听器添加到UI小部件
widget.setOnClickListener(this);
看看这里:http://developer.android.com/guide/topics/ui/ui-events.html。
答案 2 :(得分:0)
看看下面的课程。我建议你在活动中做事件处理部分。调用为您创建所需警报对话框的功能。
公共类AlertUtil {
/** Single AlertUtil Object*/
private static AlertUtil mAlertUtil;
/**
* method that prepares Dialog
* @param context
* @param title
* @param message
* @return Alert Dialog
*/
public AlertDialog getAlertDialog1(Context context, int title,int icon,
String message){
AlertDialog alert = new AlertDialog.Builder(context).create();
alert.setTitle(title);
alert.setIcon(icon);
alert.setMessage(message);
alert.setCancelable(true);
return alert;
}
public static void setAlertUtil(AlertUtil mAlertUtil) {
AlertUtil.mAlertUtil = mAlertUtil;
}
public static AlertUtil getAlertUtil() {
if(mAlertUtil == null){
setAlertUtil(new AlertUtil());
}
return mAlertUtil;
}
}