在android上创建确认对话框类

时间:2012-11-18 16:53:16

标签: android dialog confirm

我尝试使用布尔值作为结果创建自己的确认对话框类。我已阅读任何教程或建议,但结果并非如我所愿。

问题是我讨厌编写长编码,我想写一个简单的编码。这个比较delphi到android的写入确认对话框

德尔福:

if MessageDlg ('Message Text', mtConfirmation, [mbYes, mbNo], 0)

机器人:

boolean answer = false;

public boolean Confirm (Activity act, String Title, String ConfirmText,
CancelBtn String, String OkBtn) {
  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) {
  answer = true;
  }
});
dialog.setButton (DialogInterface.BUTTON_NEGATIVE, CancelBtn,
new DialogInterface.OnClickListener () {
  public void onClick (DialogInterface dialog, int buttonId) {
    answer = false;
  }
});
dialog.setIcon (android.R.drawable.ic_dialog_alert);
return answer;
}

问题是我可以创建一个生成确认对话框的类会产生一个布尔值true或false,就像在Delphi中一样。

确认对话框,以便可以在课程或其他活动中使用该课程

4 个答案:

答案 0 :(得分:3)

Android并不总是传统的。您无法显示对话框并等待其显示,然后执行某些操作。

您需要显示一个对话框,并回复回调中的是/否按钮。

这样的事情就是一个解决方案:

/**
 * Display a confirm dialog. 
 * @param activity
 * @param title
 * @param message
 * @param positiveLabel
 * @param negativeLabel
 * @param onPositiveClick runnable to call (in UI thread) if positive button pressed. Can be null
 * @param onNegativeClick runnable to call (in UI thread) if negative button pressed. Can be null
 */
public static final void confirm(
        final Activity activity, 
        final int title, 
        final int message,
        final int positiveLabel, 
        final int negativeLabel,
        final Runnable onPositiveClick,
        final Runnable onNegativeClick) {

            AlertDialog.Builder dialog = new AlertDialog.Builder(activity);
            dialog.setTitle(title);
            dialog.setMessage(message);
            dialog.setCancelable (false);
            dialog.setPositiveButton(positiveLabel,
                    new DialogInterface.OnClickListener () {
                public void onClick (DialogInterface dialog, int buttonId) {
                    if (onPositiveClick != null) onPositiveClick.run();
                }
            });
            dialog.setNegativeButton(negativeLabel,
                    new DialogInterface.OnClickListener () {
                public void onClick (DialogInterface dialog, int buttonId) {
                    if (onNegativeClick != null) onNegativeClick.run();
                }
            });
            dialog.setIcon (android.R.drawable.ic_dialog_alert);
            dialog.show();

        }

}

要使用上述方法,可以使用以下方法:

        Alert.confirm(activity, R.string.titFileExport, R.string.lblFileConfirmOverwrite, 
                R.string.yes, R.string.no, 
                new Runnable() { public void run() {performExport(activity, app, currentSong, saveFile);}}, 
                null);
        return;

答案 1 :(得分:2)

您可以将自定义布局用于对话框,或者对于更复杂的需求,可以更轻松地创建以主题为对话框的Activity并使用startActivityForResults()进行调用。只需将您的“对话框”UI设计为主题,并将其添加到活动清单条目:

android:theme="@android:style/Theme.Dialog"

答案 2 :(得分:0)

行。所以你想要一个只传递值的方法或类,并且每次需要一个对话框时都会调用它。我制作了一个程序来接收短信并在对话框中显示它。你只需要传递值作为意图并做任何你喜欢的事情。它是一个简单的程序,您可以根据需要进行修改。 http://zohaibbrohi.blogspot.com/2012/11/recieve-sms-and-show-it-in-activity-as.html

答案 3 :(得分:0)

尝试使用cordova,最新的稳定版本是2.1.0它有一个navigator.notification(在这种情况下提醒或确认)API

http://docs.phonegap.com/en/2.1.0/guide_getting-started_index.md.html#Getting%20Started%20Guides

http://docs.phonegap.com/en/2.1.0/cordova_notification_notification.md.html#Notification 唯一的缺点是使用黑莓,本机应用程序更容易出错