通过单一方法调用对话

时间:2011-06-14 13:50:02

标签: java android

我是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行代码实现它。但由于这是事件驱动的,我不知道如何将它放在具有返回值的方法中。

甚至可能吗?

提前致谢!

3 个答案:

答案 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;
}

}