java - 如何在androidX中实现一个警告对话框
问题描述
我已将我的项目迁移到 androidX,并且我想实现一个警报对话框,其中包含来自用户的正面和负面反馈。
我正在使用这段代码:
AlertDialog.Builder builder1 = new AlertDialog.Builder(getApplicationContext());
builder1.setMessage("Write your message here.");
builder1.setCancelable(true);
builder1.setPositiveButton(
"Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.d("MSG", "onClick: YES");
}
});
builder1.setNegativeButton(
"No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Log.d("MSG", "onClick: No");
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
但是在运行应用程序时出现此错误:
java.lang.IllegalStateException:您需要在此活动中使用 Theme.AppCompat 主题(或后代)。
解决方案
您可以使用材料组件库MaterialAlertDialogBuilder
提供的。
只需使用:
new MaterialAlertDialogBuilder(context)
.setTitle("Dialog")
.setMessage("Write your message here. ....")
.setPositiveButton("Ok", /* listener = */ null)
.setNegativeButton("Cancel", /* listener = */ null)
.show();
这MaterialAlertDialogBuilder
需要一个 Material 主题,并且会生成一个androidx.appcompat.app.AlertDialog
.
推荐阅读
- sql - 选择查询不返回任何记录
- r - gganimate “顺序错误(ind):参数 1 不是向量”
- rust - 由于未满足的特征边界,无法在 std::net::TcpStream 上调用读取
- docker-swarm - 如何访问在 Docker swarm 集群上运行的应用程序?
- windows - 安装 minishift 时在 Windows 上安装 syndesis
- javascript - 使用函数而不是普通 JavaScript 组件的类有什么缺点吗?
- javascript - 适用于 Google Apps 脚本的类似 Android 的 Datetimepicker
- reactjs - 未安装组件上的反应状态更新问题
- sql - 创建触发器 Postgresql
- flutter - 如何让应用栏在所有页面中保持颤动?