此组件上的样式要求您的应用程序主题为 Theme.MaterialComponents (或其后代)

2023-11-26

我是 Android 新手,我可能有一个愚蠢/愚蠢的问题。我有一个活动,我想在其中动态创建多个输入字段。输入字段的数量由用户定义。

因为输入是样式化的并且由 2 个元素组成,并且不想每次都创建这些元素,因为元素有多个每次都相同的参数。这就是为什么我只为这两个元素创建了一个 XML 文件,我想在我的程序中使用它们来创建输入。

查看输入.xml

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/textInputLayoutTableName"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="10dp"
        android:hint="@string/create_table_name"
        android:inputType="text"
        app:boxStrokeColor="@color/colorAccent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:placeholderText="@string/create_table_table_name_placeholder"
        app:startIconTintMode="src_in">
        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/textInputName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:text="" />
    </com.google.android.material.textfield.TextInputLayout>
</merge>

我的目标 XML (Activity_create_table_column_names.xml)看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout         
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.createtable.CreateTableColumnNamesActivity">

<LinearLayout
    android:id="@+id/columnNameInputContainer"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:gravity="start"
    android:orientation="vertical"
    android:padding="20dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/create_table_column_names"
    android:textStyle="bold" />

    <!-- HERE --> 
</LinearLayout>

我写的地方<!-- HERE -->我希望我所有的输入字段都是。

我一开始只显示一个输入:

private fun initLayout() {
    val container = findViewById<LinearLayout>(R.id.columnNameInputContainer)
    val inflater = applicationContext
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    val view = inflater.inflate(R.layout.view_input, LinearLayout(this))
    container.addView(view)
}

但我得到了以下异常:

Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).
at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:243)
at com.google.android.material.internal.ThemeEnforcement.checkMaterialTheme(ThemeEnforcement.java:217)
at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:145)
at com.google.android.material.internal.ThemeEnforcement.obtainTintedStyledAttributes(ThemeEnforcement.java:115)
at com.google.android.material.textfield.TextInputLayout.<init>(TextInputLayout.java:458)
at com.google.android.material.textfield.TextInputLayout.<init>(TextInputLayout.java:417)

我的样式.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
        ...
    </style>
</resources>

我究竟做错了什么?这甚至是我应该编程这样的东西的正确方法吗?

Edit: Android.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="de.hsos.ma.adhocdb">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:appComponentFactory="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:appComponentFactory">
        <activity
            android:name=".ui.createtable.CreateTableColumnNamesActivity"
            android:parentActivityName=".ui.homescreen.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.createtable.CreateTableActivity"
            android:parentActivityName=".ui.homescreen.MainActivity" />
        <activity
            android:name=".ui.homescreen.TestTableActivity"
            android:parentActivityName=".ui.homescreen.MainActivity">

            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".ui.TableShow.TableShowActivity"
            android:parentActivityName=".ui.homescreen.MainActivity" />
        <activity android:name=".ui.tablelist.LayoutTableListItem" />
        <activity android:name=".ui.homescreen.MainActivity">

        </activity>
    </application>

</manifest>

找到了解决方案,从活动而不是应用程序中获取充气机,只需修改您的initLayout()像这样

// here is the fix
val inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

此组件上的样式要求您的应用程序主题为 Theme.MaterialComponents (或其后代) 的相关文章

  • 将“R.id.myID”从字符串转换为 int 值 R.id.myID?

    我的观点上的文字代表一个ID 因此 当单击时 我想获得对该资源的引用 以下不正确的代码代表了我想要做的事情 public void onCreate Bundle savedInstanceState super onCreate save
  • 什么是适合 Android 的 html 解析器?

    什么是适合 Android 的 html 解析器 这取决于你想做什么 如果你真的想处理 html Java 中有很多 html 解析器可以使用 这里有一些 https stackoverflow com questions 2168610
  • 当活动被破坏时如何保存状态

    public class Talk extends Activity private ProgressDialog progDialog int typeBar TextView text1 EditText edit Button res
  • 单击另一个项目/小部件时展开/打开微调器?

    当用户单击另一个按钮时 我试图展开微调器 例如 我有一个带有值的微调器和一个 确定 按钮 当用户单击 确定 按钮而不从微调器中选择任何值时 微调器会自行扩展 是否可以在无需用户与微调器交互的情况下获得扩展微调器的事件 只需致电Spinner
  • 简单 XML 框架:ElementMap 中的对象具有“类似内联”的行为

    我正在尝试在 Android 上序列化自定义对象的 Hashmap 以获得如下 xml
  • Android 软键盘 - 禁用某些键

    我正在寻找一种使用内置软键盘并禁用某些键的方法 例如 如果用户不应该使用字母 f 因为在列表中该字母不存在 则该键应显示为灰色 想象一下 用户可以在文本框中键入文本以从列表中进行选择 该列表包含 ABC BCCD 床 如果用户输入 A 然后
  • Android 和 Honeycomb - 如何使用 SDK 13 拥有菜单图标而不需要“操作栏”

    我想最大限度地利用 Honeycomb 应用程序的屏幕 由于屏幕底部已经被 始终打开 的项目所困 我想在该空间中添加一个菜单按钮 而不是牺牲更多的屏幕空间 在顶部放置一个 操作栏 我怎样才能做到这一点without降级到 API 10 或更
  • NDK8d 未找到 std::string 操作(即 stol、stoi)

    我尝试使用 ndk r8d 和 c 11 支持来建立我的第一个 android 项目 一些 c 11 机制工作正常 即 lambda 表达式 但是当我尝试时 使用新的字符串操作之一 编译失败 错误 stol 不是 std 的成员 这是我的
  • 改造将多个图像上传到单个密钥

    我正在使用 Retrofit 将图像上传到我的服务器 这里我需要为一个密钥上传多个图像 我已经尝试使用 Postman 网络客户端 它运行良好 这是一个屏幕截图 以下是请求的键值对 调查图像 文件1 文件2 文件3 属性图像 文件DRA j
  • 返回到上一个活动的最后状态

    我有两个活动 A 和 B 当应用程序启动时 活动 A 会被加载 我会从数据库将数据加载到其中 我可以毫无问题地转到活动 B 但是当我返回活动 A 时 会查看旧数据一段时间 然后重新加载活动 知道如何解决这个问题吗 在从数据库加载数据之前清除
  • webview 中的 android 移动 Twitter 页面无法打开?

    我正在尝试打开以 https 开头的 Twitter 页面webview在安卓中 但它没有打开 并且持续加载时出现黑屏 屏幕截图如下 Edit 在主网络视图中我有 Twitter 页面的链接https twitter com mytwitt
  • Firebase 身份验证中是否需要 SMS Retriever API 才能进行 otp 自动填充?

    我在用Firebase auth api验证用户电话号码 目前 就我而言 我有一个屏幕 用户在其中输入电话号码 并在第二个屏幕上输入密码 根据文档firebase大多数时候自动检索 OTP 并启动验证过程 所以我的问题是它已经实现了SMS
  • 如何在移动应用程序上连接到服务器?

    我是移动应用程序的新手 我基本上来自网络开发平台 我只是在玩 App Framework LungoJS Jquery Mobile kendo 等移动框架 以获得该垂直领域的一些知识 我正在开发的应用程序仍然处于 UI 级别 我所需要的只
  • Android 导航组件 - 从“任何地方”/基本片段导航?

    我正在开发一个应用程序 它有一个奇怪的花招 可以在设备旋转时打开特定的片段 在实现 android 的导航组件之前 所需要的只是对当前活动的引用 并且可以在特定时刻向用户显示的任何内容之上执行手动片段事务 但是在转移到导航组件之后 我发现很
  • Android Lollipop 中应用程序外部配置文件和内部配置文件之间的数据传输

    相关问题安卓工作版 我的应用程序是一个设备管理员特权应用程序 现在我修改了创建托管工作配置文件并将其自身设置为配置文件所有者的代码 问题是 如果我upgrade我的应用程序 它成为设备管理员的配置文件所有者 现在将会有两份我的应用程序 一个
  • 解析 XML 标签不匹配时出错

  • 通过 Google 帐户从 Google Play 安装的应用程序列表

    以下是我的问题 是否可以通过使用任何 api 以编程方式通过 Google Play 获取用户已安装的应用程序列表 请注意 我并不是询问设备中当前安装的应用程序列表 而是询问在某个时刻已安装的应用程序列表 我需要解决上述问题 因为我正在考虑
  • Dart/Flutter 如何编译到 Android?

    我找不到任何具体的资源 Dart 是否被编译到 JVM 或者 Google 的团队是否编译了 Dart VM 以在 JVM 上运行 然后在 JVM 内的 Dart VM 中运行 Dart 前者更有意义 并且符合 无桥 的口号 但后者似乎更符
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • 带有不透明导航栏的深色文本透明状态栏

    等等 这不是重复的 类似的问题已被问到here https stackoverflow com questions 38025865 android fully transparent status bar with non transpa

随机推荐

  • Qt:按键事件[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是 Qt 的初学者 正在实现 keypressevent 我想以这样的方式处理按键 如
  • 使用 epplus 创建 Excel 图表

    这就是我所拥有的 我有一个包含两列的 Excel 工作表 第 1 列包含图例的描述 例如类别 1 类别 2 等 第 2 列包含总计数的数字 例如 6 4 18 等 Category Count Category1 6 Category2 4
  • 从 Java 在 SQL Server 中插入多行[重复]

    这个问题在这里已经有答案了 我需要从 Java 代码将多行插入 SQL Server 数据库 一次 100 行 我怎样才能做到这一点 目前我正在一项一项地插入 这看起来效率不高 您可以使用PreparedStatement addBatch
  • 有没有好的方法来为 swig 接口生成文档?

    我想知道是否有任何好的构建 维护技术 接口上的文档 我正在使用 swig 构建从 c 代码到 python 的接口 大多数时候我只是 包括 c 头文件 我正在处理至少几十个课程 和数百个功能 因此自动化工具是首选 理想情况下 我想在 c 标
  • git:将某些文件的历史记录拆分到单独的分支中

    假设我不久前引入了 现在注意到它不应该是我的一部分main而是一个分支feature 是否可以使用例如git filter branch自动将 的所有历史记录移出我的main分支进入feature branch 听起来你正在做一些相当疯狂的
  • 具有引用参数或匿名函数的 Func / Action 委托

    我只是想知道 确切的语法是如何的ref and out委托和内联 lambda 函数的参数 这是一个例子 如果函数定义为 public void DoSomething int withValue 函数中的委托可以通过以下方式创建 publ
  • 管理员如何访问特定域中所有用户的 Google 云端硬盘内容?

    我正在开发一种工具 可以使用管理员运行的 Admin SDK 自动将 Google Drive 文档的所有权从一个用户转移到另一个用户 我使用数据传输 API 进行所有权转移 我想通过检查传输前后 Google Drive 文档的大小 数量
  • Perl的&&的结果是什么?

    当我尝试这个时 a 1 b 2 print a b n 结果是2 为什么呢 Quote perlop 和 运算符 返回最后评估的值 与 C 的 和 不同 返回 0 或 1 所结果的2Perl 认为是 true 因此当您使用 运算符在逻辑条件
  • 有人可以帮助我使用 RDF/OWL 可视化工具吗?

    我尝试在互联网上搜索 但找不到合适的工具 所以如果有人可以为我提供一个可以解析和显示 RDF 和 OWL 本体图的工具的链接 SemWeb图形表示法 W3C 维护的图形符号和软件应用程序列表 已过时 RDF可视化在 Ontotext 研究空
  • Django 使用 UpdateView 上传文件

    我尝试了通用视图的简约 django 实现来上传个人资料图片 views py class UpdateProfile UpdateView form class UpdateUserProfileForm model UserProfil
  • 出了问题;所有 ROC 指标值均缺失:

    我正在使用插入符包在 R 中训练模型 ctrl lt trainControl method repeatedcv repeats 3 summaryFunction twoClassSummary logitBoostFit lt tra
  • getter 和 setter 被编译器内联的概率

    我的问题很简单 Q Java 中编译器内联 getter setter 方法的可能性有多大 显然对此没有明确的答案 但其他信息将不胜感激 Extra 我知道编译器 标准和 JIT 总是有机会决定内联方法 而当涉及到 getter 和 set
  • 在 google 中添加联系人时出现异常。内部服务器错误

    从今天早上开始 我们在通过 Google API 从 java 插入联系人时收到以下错误 请找到下面的堆栈跟踪 Exception while adding contact in google com google gdata util S
  • 使用 dplyr 将函数应用于 data.frame 中的行

    In base R我会做以下事情 d lt data frame a 1 4 b 4 1 c 2 5 apply d 1 which max With dplyr我可以执行以下操作 library dplyr d gt mutate u p
  • 尝试访问由 Devise JWT 保护的 API 时“没有可用的验证密钥”

    我有宝石devise jwt安装 我可以执行登录请求 并收到授权令牌作为回报 但是当我尝试访问安全端点时 我收到以下消息 No verification key available blaine devbox langsite backen
  • Bootstrap-Select 打开div下的选项

    我有一个固定大小的 div 假设 50 像素 里面有一个下拉菜单 我用过引导选择使其可搜索 div style width 200 div
  • 提示用户下载 PDF 文件而不是打开

    在我的项目站点中 如果单击链接 PDF 将在新窗口或父窗口中打开 好吧 我希望出现一个框 提示用户下载文件而不是打开它 有谁知道一个简单的 JavaScript onClick 事件可以在所有浏览器中使用默认设置执行此操作 我的服务器是基于
  • 全局概述覆盖

    我可以通过什么方式覆盖全局主题 以便所有使用variant outlined 的组件都受到该样式的影响 还想覆盖焦点 悬停等事件 material ui core 3 9 2 顺便说一句 我不确定有多少不同的组件有 概述 的变体 您无法在单
  • 实施访客计数器

    我是一个新手 正在使用 ASP Net 2 0 和 C 2005 开发一个网站 我想添加一个工具来计算数量 我网站的访问者数量 我已经收集了使用 Global asax 添加此功能的基本信息 我通过在 system web 部分下添加行 对
  • 此组件上的样式要求您的应用程序主题为 Theme.MaterialComponents (或其后代)

    我是 Android 新手 我可能有一个愚蠢 愚蠢的问题 我有一个活动 我想在其中动态创建多个输入字段 输入字段的数量由用户定义 因为输入是样式化的并且由 2 个元素组成 并且不想每次都创建这些元素 因为元素有多个每次都相同的参数 这就是为