我尝试使用布尔值作为结果创建自己的确认对话框类。我已阅读任何教程或建议,但结果并非如我所愿。
问题是我讨厌编写长编码,我想写一个简单的编码。这个比较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中一样。
确认对话框,以便可以在课程或其他活动中使用该课程
答案 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 唯一的缺点是使用黑莓,本机应用程序更容易出错