对话框就像在当前窗口前面弹出的任何其他窗口一样,用于显示一些短消息、接受用户输入或询问用户决定。与
Toast
不同,对话框通常用于要求用户注意的地方。 Android 支持多种不同的方式来创建对话框,例如
AlertDialog
和
FragmentDialog
。在这个例子中,我们将涵盖 AlertDialog 和 DialogFragment 的所有方面。
1. 在 Xamarin.Android 中使用 AlertDialog
AlertDialog
是
Dialog
的子类,可以显示一个、两个或三个按钮。如果只想在此对话框中显示一个字符串,请使用
SetMessage()
方法。
以下代码片段可用于创建一个简单的 AlertDialog,其中包含两个按钮 Delete 和 Cancel。
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder (this);
alert.SetTitle ("Confirm delete");
alert.SetMessage ("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
alert.SetPositiveButton ("Delete", (senderAlert, args) => {
Toast.MakeText(this ,"Deleted!" , ToastLength.Short).Show();
});
alert.SetNegativeButton ("Cancel", (senderAlert, args) => {
Toast.MakeText(this ,"Cancelled!" , ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
上面的代码片段将产生如以下屏幕截图所示的输出。
2. 在 Xamarin.Android 中使用 DialogFragment
自
Android 3.0(API 级别 11)
发布以来,片段可以显示为对话框并称为
DialogFragment
。如果您支持旧的 android 版本,则可以使用片段兼容性支持库。
要创建对话框片段,我们将使用 DialogFragment 类。此类派生自 Fragment,其行为很像具有所有可用片段生命周期方法的片段。 Android 推荐使用 DialogFragment 而不是 AlerDialog。
您需要执行以下步骤来创建 DialogFragment
- 创建一个从 DialogFragment 类扩展的新类。
-
与常规片段一样,覆盖
OnCreateView()
回调以附加对话框布局。 -
或者,您可以覆盖
OnCreateDialog()
方法并返回一个 Dialog 实例。此方法用于移植旧的 AlertDialog 代码,无需进行太多修改。
在此示例中,我们将看到 OnCreateView() 和 OnCreateDialog() 回调。
3. 使用 OnCreateDialog() 的对话框片段
以下代码片段显示了如何通过覆盖 OnCreateDialog() 方法来创建对话框。
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder (this);
alert.SetTitle ("Confirm delete");
alert.SetMessage ("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
alert.SetPositiveButton ("Delete", (senderAlert, args) => {
Toast.MakeText(this ,"Deleted!" , ToastLength.Short).Show();
});
alert.SetNegativeButton ("Cancel", (senderAlert, args) => {
Toast.MakeText(this ,"Cancelled!" , ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
4. 使用 OnCreateView() 的对话框片段
DialogFragment 与任何其他片段一样,应用相同的生命周期规则。现在我们必须重写 onCreateView 方法以将布局附加到视图层次结构并构建对话框片段。
让我们首先定义您的片段的布局。在此示例中,我使用了两个 TextView 和 Button。我的布局如下所示:
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder (this);
alert.SetTitle ("Confirm delete");
alert.SetMessage ("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
alert.SetPositiveButton ("Delete", (senderAlert, args) => {
Toast.MakeText(this ,"Deleted!" , ToastLength.Short).Show();
});
alert.SetNegativeButton ("Cancel", (senderAlert, args) => {
Toast.MakeText(this ,"Cancelled!" , ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
现在让我们从 OnCreateView() 方法中扩充布局。我的 DialogFragment 类如下所示:
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder (this);
alert.SetTitle ("Confirm delete");
alert.SetMessage ("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
alert.SetPositiveButton ("Delete", (senderAlert, args) => {
Toast.MakeText(this ,"Deleted!" , ToastLength.Short).Show();
});
alert.SetNegativeButton ("Cancel", (senderAlert, args) => {
Toast.MakeText(this ,"Cancelled!" , ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
上面的代码片段将产生如以下屏幕截图所示的输出。
5.添加DialogFragment
我们差不多完成了!在您的 Activity 中添加以下代码片段以实例化并显示对话框;
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder (this);
alert.SetTitle ("Confirm delete");
alert.SetMessage ("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
alert.SetPositiveButton ("Delete", (senderAlert, args) => {
Toast.MakeText(this ,"Deleted!" , ToastLength.Short).Show();
});
alert.SetNegativeButton ("Cancel", (senderAlert, args) => {
Toast.MakeText(this ,"Cancelled!" , ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
上面的代码片段将产生如以下屏幕截图所示的输出。