【问题标题】:Error while inflating button on a existing view NullPointerException in AnimatorSet.cloneAnimatorSet.clone 中现有视图 NullPointerException 上的按钮膨胀时出错
【发布时间】:2019-08-08 00:54:16
【问题描述】:

我在创建 Button 时遇到问题。该按钮应该插入到预先存在的布局中。

我正在尝试在视频屏幕上显示一个按钮。我遇到了以下异常。这只发生在运行 Android 7 的“我的设备”上。它适用于运行 Android 8+ 的设备。我不确定这段代码可能有什么问题。任何帮助表示赞赏。提前致谢。

    Caused by: java.lang.NullPointerException: Attempt to read from field 'android.animation.Animator android.animation.AnimatorSet$Node.mAnimation' on a null object reference
        at android.animation.AnimatorSet.clone(AnimatorSet.java:725)
        at android.animation.AnimatorSet.clone(AnimatorSet.java:682)
        at android.animation.StateListAnimator.clone(StateListAnimator.java:148)
        at android.animation.StateListAnimator$StateListAnimatorConstantState.newInstance(StateListAnimator.java:328)
        at android.animation.StateListAnimator$StateListAnimatorConstantState.newInstance(StateListAnimator.java:327)
        at android.content.res.ConstantState.newInstance(ConstantState.java:53)
        at android.content.res.ConstantState.newInstance(ConstantState.java:61)
        at android.content.res.ConfigurationBoundResourceCache.getInstance(ConfigurationBoundResourceCache.java:40)
        at android.animation.AnimatorInflater.loadStateListAnimator(AnimatorInflater.java:163)
        at android.view.View.<init>(View.java:4821)
        at android.widget.TextView.<init>(TextView.java:996)
        at android.widget.Button.<init>(Button.java:113)
        at android.widget.Button.<init>(Button.java:106)
        at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:71)
        at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:67)
        at android.support.v7.app.AppCompatViewInflater.createButton(AppCompatViewInflater.java:187)
        at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:110)
        at android.support.v7.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266)
        at android.support.v7.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316)
        at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:193)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:496)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:378)
        at com.abc.minicontroller.aba.onCreateView(Skicontroller.kt:23)

这是我的代码:

<Button xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tool="http://schemas.android.com/tools"
    style="@style/ButtonStyle"
    android:orientation="vertical"
    android:id="@+id/skip_intro_button"
    android:paddingStart="@dimen/spacing_normal"
    android:paddingEnd="@dimen/spacing_normal"
    tool:text="Skip Recap"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="@dimen/spacing_normal"/>

风格:

<style name="ButtonStyle">
    <item name="android:textColor">@android:color/black</item>
    <item name="android:background">@drawable/ski_background</item>
</style>

选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ski_background_selected"
        android:state_pressed="true"/>
    <item android:drawable="@drawable/ski_background_default"/>
</selector>

可绘制:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview_background_shape">
    <stroke android:width="1dp" android:color="@android:color/black"/>
    <padding android:left="4dp"
        android:top="4dp"
        android:right="4dp"
        android:bottom="4dp"/>
    <solid android:color="@color/gray_opaque"/>
</shape>

【问题讨论】:

  • 问题似乎不在于您发布的代码,至少不是我在使用您的代码成功编译和运行测试应用程序(在具有编译和targetSDKVersion 26 和 minSDKVersion 24 - Android Studio 不允许我将 compileSDKVersion 降低到 26 以下)。请提供有关 1. 您的 build.gradle android 设置、2. 其他可绘制对象、3. 您使用的动画、4. 您在扩展 XML 时使用的 Java 代码的更多信息。
  • 你能在样式中添加一个父元素并尝试给它充气吗?

标签: android android-layout layout


【解决方案1】:

A) 共享设计模式无济于事,因为错误是合乎逻辑的

B) 仔细看,这是一个空指针异常。因此,要么您使用的 API 没有向后兼容性,要么您引用的对象没有分配任何位置。由于您可以在 Android 8+ 上运行它,因此很可能是缺乏向后兼容性问题

C) 正确使用您的日志来了解哪里出了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多