Xamarin Android 中的 AlertDialog 和 DialogFragment 示例
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2800+ 小伙伴加入学习 ,欢迎点击围观
对话框就像在当前窗口前面弹出的任何其他窗口一样,用于显示一些短消息、接受用户输入或询问用户决定。与
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();
上面的代码片段将产生如以下屏幕截图所示的输出。