android - 您需要在此活动中使用 Theme.AppCompat 主题(或后代)。在数据适配器中
问题描述
我正在尝试在 RecyclerView 中使用 AlertDialog 但我遇到了以下问题:您需要在此活动中使用 Theme.AppCompat 主题(或后代)。Activity 类中的相同 AlertDialog 工作正常,但在 DataAdapter 中没有。
风格
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
显现
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.simple">
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
数据适配器
private Context mCtx;
holder.moreOptions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(mCtx,holder.moreOptions);
popupMenu.inflate(R.menu.card_popup_menu);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.delete_note:
AlertDialog.Builder alertDialog = new AlertDialog.Builder(mCtx);
alertDialog.setTitle("Notice");
alertDialog.setMessage("Launching this missile will destroy the entire universe. Is this what you intended to do?");
// add the buttons
alertDialog.setPositiveButton("Launch missile", null);
alertDialog.setNeutralButton("Remind me later", null);
alertDialog.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = alertDialog.create();
dialog.show();
解决方案
您还必须像这样将主题 ID 与上下文一起传递。如果对您有帮助,请接受作为答案。
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this, R.style.Theme_AppCompat_DayNight_Dialog_MinWidth);
推荐阅读
- python - 机器学习:多输出随机森林回归器
- reactjs - 如何使用 ReactJS 在 devexpress 数据网格中获取全局索引
- python - Docker-compose Nginx 多容器烧瓶问题
- android - ffmpeg 编码音频中的持续时间和比特率不正确
- excel - Range.AutoFilter 用于可能存在或不存在的过滤器
- java - 为什么在保存期间通过实现 ContraintValidator 的类调用大多数 JPA Repositpry 方法导致 HH000099:断言失败?
- javascript - 如何使用 ReactJS 在 javascript 中搜索段落中的多个关键字并用不同颜色突出显示每个关键字?
- typescript - 如何使用空数组的 push 属性?
- continuous-deployment - 有没有办法判断章鱼中的时间表是否触发了发布
- html - 在任何表格单元格中垂直和逆时针显示文本