webentwicklung-frage-antwort-db.com.de

Void kann nicht aufgerufen werden. Android.view.View.setElevation (float) für Nullobjekt in lapism/SearchView

Ich verwende Bibliothekslapismus/SearchView ( https://github.com/lapism/SearchView ) in meinem Projekt. Ich bekomme jedoch nur unter Android 5.0 die folgende Laufzeitausnahme:

A/art: art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: can't call void Android.view.View.setElevation(float) on null object
A/art: art/runtime/check_jni.cc:65]     in call to CallVoidMethodV
A/art: art/runtime/check_jni.cc:65]     from void Android.animation.PropertyValuesHolder.nCallFloatMethod(Java.lang.Object, long, float)
A/art: art/runtime/check_jni.cc:65] "main" prio=5 tid=1 Runnable
A/art: art/runtime/check_jni.cc:65]   | group="main" sCount=0 dsCount=0 obj=0x757838b0 self=0xb8994958
A/art: art/runtime/check_jni.cc:65]   | sysTid=28467 Nice=0 cgrp=apps sched=0/0 handle=0xb6f80058
A/art: art/runtime/check_jni.cc:65]   | state=R schedstat=( 0 0 0 ) utm=27 stm=10 core=1 HZ=100
A/art: art/runtime/check_jni.cc:65]   | stack=0xbe01e000-0xbe020000 stackSize=8MB
A/art: art/runtime/check_jni.cc:65]   | held mutexes= "mutator lock"(shared held)
A/art: art/runtime/check_jni.cc:65]   native: #00 pc 00004828  /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
A/art: art/runtime/check_jni.cc:65]   native: #01 pc 00002ec5  /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
A/art: art/runtime/check_jni.cc:65]   native: #02 pc 0024437d  /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+68)
A/art: art/runtime/check_jni.cc:65]   native: #03 pc 0022774b  /system/lib/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+394)
A/art: art/runtime/check_jni.cc:65]   native: #04 pc 000af2db  /system/lib/libart.so (art::JniAbort(char const*, char const*)+582)
A/art: art/runtime/check_jni.cc:65]   native: #05 pc 000afa21  /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
A/art: art/runtime/check_jni.cc:65]   native: #06 pc 000b0613  /system/lib/libart.so (art::ScopedCheck::CheckVirtualMethod(_jobject*, _jmethodID*)+402)
A/art: art/runtime/check_jni.cc:65]   native: #07 pc 000ba087  /system/lib/libart.so (art::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+70)
A/art: art/runtime/check_jni.cc:65]   native: #08 pc 0006028f  /system/lib/libandroid_runtime.so (???)
A/art: art/runtime/check_jni.cc:65]   native: #09 pc 000721e5  /data/dalvik-cache/arm/[email protected]@boot.oat (Java_Android_animation_PropertyValuesHolder_nCallFloatMethod__Ljava_lang_Object_2JF+132)
A/art: art/runtime/check_jni.cc:65]   at Android.animation.PropertyValuesHolder.nCallFloatMethod(Native method)
A/art: art/runtime/check_jni.cc:65]   at Android.animation.PropertyValuesHolder.access$400(PropertyValuesHolder.Java:38)
A/art: art/runtime/check_jni.cc:65]   at Android.animation.PropertyValuesHolder$FloatPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.Java:1296)
A/art: art/runtime/check_jni.cc:65]   at Android.animation.ObjectAnimator.animateValue(ObjectAnimator.Java:952)
A/art: art/runtime/check_jni.cc:65]   at Android.animation.ValueAnimator.animationFrame(ValueAnimator.Java:1207)
A/art: art/runtime/check_jni.cc:65]   at Android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.Java:1248)
A/art: art/runtime/check_jni.cc:65]   at Android.animation.ValueAnimator$AnimationHandler.doAnimationFrame(ValueAnimator.Java:659)
A/art: art/runtime/check_jni.cc:65]   at Android.animation.ValueAnimator$AnimationHandler.run(ValueAnimator.Java:682)
A/art: art/runtime/check_jni.cc:65]   at Android.view.Choreographer$CallbackRecord.run(Choreographer.Java:792)
A/art: art/runtime/check_jni.cc:65]   at Android.view.Choreographer.doCallbacks(Choreographer.Java:596)
A/art: art/runtime/check_jni.cc:65]   at Android.view.Choreographer.doFrame(Choreographer.Java:556)
A/art: art/runtime/check_jni.cc:65]   at Android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.Java:778)
A/art: art/runtime/check_jni.cc:65]   at Android.os.Handler.handleCallback(Handler.Java:739)
A/art: art/runtime/check_jni.cc:65]   at Android.os.Handler.dispatchMessage(Handler.Java:95)
A/art: art/runtime/check_jni.cc:65]   at Android.os.Looper.loop(Looper.Java:155)
A/art: art/runtime/check_jni.cc:65]   at Android.app.ActivityThread.main(ActivityThread.Java:5696)
A/art: art/runtime/check_jni.cc:65]   at Java.lang.reflect.Method.invoke!(Native method)
A/art: art/runtime/check_jni.cc:65]   at Java.lang.reflect.Method.invoke(Method.Java:372)
A/art: art/runtime/check_jni.cc:65]   at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1028)
A/art: art/runtime/check_jni.cc:65]   at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:823)

Hat jemand eine Idee, wie man dieses Problem beheben kann? 

22
J-Yen

Um dieses Problem zu beheben, müssen Sie Ihre XML-Datei aktualisieren, die SearchView und AppBarLayout enthält. Fügen Sie Android:stateListAnimator="@null" zu Ihrer AppBarLayout hinzu, wie unten gezeigt.

 <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:stateListAnimator="@null">

Es zeigt die Warnung an, dass das Android:stateListAnimator="@null" -Attribut stateListAnimator nur in API-Ebene 21 verwendet wird. Aber ich habe den Quellcode der Bibliothek überprüft und stürzt in der SearchBehavior-Klasse ab, wenn versucht wird, mAppBarLayout.setStateListAnimator(null); festzulegen.

EDIT

Wie in den Kommentaren unten erwähnt, bezieht sich dieses Problem mehr auf die Android-Komponenten nativer Absturz beim Scrollen in RecyclerView + CollapsingToolbarLayout

54

Das AppBarLayout-Attribut app:elevation="..dp" hilft, dieses Problem zu lösen

0