android.support.v7.widget.AppCompatButton无法实例化(使用自定义样式)

时间:2018-11-05 05:09:21

标签: android android-studio android-appcompat

仅通过将Theme.AppCompat.Light.DarkActionBar更改为Base.Theme.AppCompat.Light.DarkActionBar即可解决此问题

我正在尝试使用自定义按钮样式,但是收到以下错误:

无法实例化以下类:

android.support.v7.widget.AppCompatButton

仅通过将Theme.AppCompat.Light.DarkActionBar更改为Base.Theme.AppCompat.Light.DarkActionBar即可解决此问题

我使用的是自定义样式,因此很可能与之无关。

这是我当前的代码:

Styles.XML

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.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>

<style name="RaisedButton" parent="Widget.AppCompat.Button.Colored">

    <item name="backgroundTint">@color/colorButton</item>
    <item name="android:textColor">@color/colorButtonText</item>


</style>

activity_patient_main.xml

<android.support.v7.widget.AppCompatButton
    android:id="@+id/button3"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="@string/ask_a_question"
    android:layout_marginTop="20dp"
    android:layout_marginBottom="20dp"
    android:theme="@style/RaisedButton"
    android:onClick="buttonClicked"
    android:textSize="60sp" />

我尝试过的事情:

将Theme.AppCompat.Light.DarkActionBar更改为Base.Theme.AppCompat.Light.DarkActionBar,

清除缓存并重新启动

将我的Gradle版本更改为28.0.0-alpha1

Widget.AppCompat.Button.Colored切换到Base.Widget.AppCompat.Button.Colored

检查是否要扩展AppCompatActivity (我是)

请注意,它确实可以在我的手机上运行,​​但不会在android studio中呈现。我不知道这是否只是渲染器的问题,如果是,是否可以解决问题?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您应该使用

db.table1.aggregate([
  { "$match": { "item_id": "1.1" }},
  { "$lookup": {
    "from": "table2",
    "let": { "item_id": "$item_id", "m_date": "$m_date" },
    "pipeline": [
      { "$match": {
        "$expr": { "$eq": ["$$item_id", "$item_id" ] },
        "$expr": { "$eq": ["$$m_date", "$m_date"] }
      }}
    ],
    "as": "table2_values"
  }},
  { "$addFields": { "ref_id": { "$arrayElemAt": ["$table2_values.ref_id", 0] }}},
  { "$project": { "_id": 0, "item_id": 1, "ref_id": 1 }}
])

代替

<item name="android:backgroundTint">@color/colorButton</item>

请注意,它要求API级别21!