无法在null对象上调用void android.view.View.setTranslationZ(float)

我在我的项目中使用库recyclerview-multiselect在recyclerview上选择多个项目在三星设备上:当我长按并选择一个项目时,多重选择器启动但是一旦我取消选择最后一个选择项目我就会得到以下exception这只发生在三星设备

JNI DETECTED ERROR IN APPLICATION: can't call void android.view.View.setTranslationZ(float) on null object in call to CallVoidMethodV from void android.animation.PropertyValuesHolder.nCallFloatMethod(java.lang.Object, long, float) "main" prio=5 tid=1 Runnable | group="main" sCount=0 dsCount=0 obj=0x86d99ef0 self=0xb4d07800 | sysTid=28321 nice=0 cgrp=apps sched=0/0 handle=0xb6f9dec8 | state=R schedstat=( 1263638622 186444747 1521 ) utm=90 stm=36 core=1 HZ=100 | stack=0xbe20a000-0xbe20c000 stackSize=8MB | held mutexes= "mutator lock"(shared held) native: #00 pc 00004c58 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23) native: #01 pc 000034c1 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8) native: #02 pc 002590fd /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits >&, int, char const*, art::mirror::ArtMethod*)+84) native: #03 pc 0023c5c3 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits >&) const+162) native: #04 pc 000b2655 /system/lib/libart.so (art::JniAbort(char const*, char const*)+620) native: #05 pc 000b2d85 /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+68) native: #06 pc 000b309f /system/lib/libart.so (art::ScopedCheck::CheckVirtualMethod(_jobject*, _jmethodID*)+438) native: #07 pc 000be40b /system/lib/libart.so (art::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+82) native: #08 pc 00068467 /system/lib/libandroid_runtime.so (???) native: #09 pc 00072005 /system/framework/arm/boot.oat (Java_android_animation_PropertyValuesHolder_nCallFloatMethod__Ljava_lang_Object_2JF+132) at android.animation.PropertyValuesHolder.nCallFloatMethod(Native method) at android.animation.PropertyValuesHolder.access$400(PropertyValuesHolder.java:38) at android.animation.PropertyValuesHolder$FloatPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.java:1296) at android.animation.ObjectAnimator.animateValue(ObjectAnimator.java:952) at android.animation.ValueAnimator.animationFrame(ValueAnimator.java:1207) at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1248) at android.animation.ValueAnimator$AnimationHandler.doAnimationFrame(ValueAnimator.java:659) at android.animation.ValueAnimator$AnimationHandler.run(ValueAnimator.java:682) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777) at android.view.Choreographer.doCallbacks(Choreographer.java:590) at android.view.Choreographer.doFrame(Choreographer.java:559) 

Related of "无法在null对象上调用void android.view.View.setTranslationZ(float)"

由于我使用了recycleview-multiselect,它在SwappingHolder中设置了setSelectionModeStateListAnimator,setDefaultModeStateListAnimator,setSelectionModeBackgroundDrawable,setDefaultModeBackgroundDrawable,所以在我超级调用holder之后就设置了:

  if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setSelectionModeStateListAnimator(null); setDefaultModeStateListAnimator(null); } // Default selection mode background drawable is this setSelectionModeBackgroundDrawable(null); setDefaultModeBackgroundDrawable( null ); 

并在xml中使用了我自己的选择器,这解决了崩溃问题。