2015-06-18 6 views
15

Ich benutze Bibliothek recyclerview-multiselect in meinem Projekt, um mehrere Elemente auf Recyclerview wählen Auf Samsung-Gerät: Wenn ich lange drücken und ein Element auswählen die Multiselector startet, aber sobald ich das letzte ausgewählte Element I Ausnahme Dies geschieht nur om Samsung GeräteKann nicht void android.view.View.setTranslationZ (float) auf Nullobjekt aufrufen

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<char> >&, 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<char> >&) 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) 
+1

Ich bekomme den gleichen Absturz beim Aufruf von setStateListAnimator() auf meiner Schaltfläche. Es passiert auf meinem Samsung Galaxy S5. – rrbrambley

+2

Wir hatten das gleiche Problem, wenn wir setStateListAnimator (null) aufgerufen haben; auf einer Ansicht. – hellphil

+0

@hellphil Ich habe das schon ausprobiert, ich benutze Recyclerview, auf welcher Seite hast du das gemacht? weitere Vorschläge ?? – chin87

Antwort

9

wie ich wurde mit recycleview-Multiselect, hat es setSelectionModeStateListAnimator, setDefaultModeStateListAnimator, setSelectionModeBackgroundDrawable, setDefaultModeBackgroundDrawable Set erhalten folgende deaktivieren in SwappingHolder So af ter mein super Anruf an den Halter nur gesetzt:

Und meine eigenen Selektoren in Xml verwendet, hat dies den Absturz gelöst.

+0

Bitte senden Sie einen Beispielcode für Ihre Selektoren, wie sie aussehen und wie Sie sie implementiert haben. Dies wird der wachsenden Samsung Lollipop Community sehr zugute kommen. – AlleyOOP

+0

Ich benutze auch recycleview-multiselect und das passiert, nachdem ich für einige Sekunden lang auf ein Element geklickt habe. Beachten Sie, dass es im Emulator OK ist. @ Chin87, könntest du bitte noch mehr Infos geben? – WindRider

+0

@WindRider haben Sie ViewHolder verwendet? In ViewHolders Konstruktor, nach Super-Aufruf fügen Sie den obigen Code – chin87