【问题标题】:AppCompatButton android:onClick Could not find a method exceptionAppCompatButton android:onClick 找不到方法异常
【发布时间】:2018-04-25 12:27:29
【问题描述】:

我只是在 KitKat 版本上遇到这个问题,其余的从 16 API 级别到 25 都可以正常工作

实例化布局的类有布局的方法,例子

<android.support.v7.widget.AppCompatButton
  android:onClick="onClick"
...
public void onClick(View v) {
  // do something
}

我知道我可以将其更改为侦听器、数据绑定或使用诸如 Butterknife 之类的库,但我很想知道为什么只在 4.X 版本上崩溃?

xml 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:onClick="onClick" />

    <android.support.v7.widget.AppCompatButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:onClick="onClick" />
</LinearLayout>

【问题讨论】:

  • 您不必使用AppCompatButton。当您在布局中使用 Button 时,它会自动使用。 developer.android.com/reference/android/support/v7/widget/…
  • 感谢您的建议,但问题是,为什么仅在 Kitkat 上失败?
  • @Sharj 我刚刚使用 Button 进行了测试,也失败了
  • 你能显示完整的xml文件吗?
  • @fisher3421 我已经用 xml 更新了问题

标签: android android-4.4-kitkat


【解决方案1】:

我已经找到了这个问题的一些解释。它被归档为一个错误。这是错误报告的链接。 https://issuetracker.google.com/issues/37108938

简而言之,他们说该问题已在 API 24 中修复,并且 onClick 与支持库不兼容。我已在有关 kitkat 问题的帖子中添加了评论。

【讨论】:

    【解决方案2】:

    有一个解决方法。它在 API 19 上测试并且运行良好

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            android:onClick="onClick" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/appCompatButtonStyle"   // Note this
            android:text="Button"
            android:onClick="onClick" />
    </LinearLayout>
    

    在你的styles.xml中

    <style name="appCompatButtonStyle" parent="Widget.AppCompat.Button.Colored">
        <item name="backgroundTint">@color/colorWhite</item>
        <item name="android:textColor">@color/colorMaterialGrey</item>
    </style>
    

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 1970-01-01
      • 2017-07-30
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      相关资源
      最近更新 更多