Я получаю этот крах в Crash Reporting:
Exception java.lang.NoClassDefFoundError: pim
pil.<clinit> (SourceFile:2)
pij.onAnimationEnd (SourceFile:10)
android.animation.AnimatorSet$AnimatorSetListener.onAnimationEnd (AnimatorSet.java:818)
android.animation.ValueAnimator.endAnimation (ValueAnimator.java:1056)
android.animation.ValueAnimator.access$400 (ValueAnimator.java:50)
android.animation.ValueAnimator$AnimationHandler.doAnimationFrame (ValueAnimator.java:644)
android.animation.ValueAnimator$AnimationHandler.run (ValueAnimator.java:660)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:761)
android.view.Choreographer.doCallbacks (Choreographer.java:574)
android.view.Choreographer.doFrame (Choreographer.java:543)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:747)
android.os.Handler.handleCallback (Handler.java:733)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:136)
android.app.ActivityThread.main (ActivityThread.java:5154)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:732)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:566)
dalvik.system.NativeStart.main (NativeStart.java)
Это началось после того, как я добавил recyclelView в свой макет и еще код, но я подозреваю:
com.testapp.MyRecyclerView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/recycleViewImages"
это мой обычай recyclerview, но эта ошибка произошла даже с обычным recyclerview (не моим обычаем)
и вот код моего пользовательского вида:
public class MyRecyclerView extends RecyclerView {
private FirebaseAnalytics mFirebaseAnalytics = null;
public MyRecyclerView(Context context) {
super(context);
if (mFirebaseAnalytics == null && context != null) {
mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
}
}
public MyRecyclerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
if (mFirebaseAnalytics == null && context != null) {
mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
}
}
public MyRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (mFirebaseAnalytics == null && context != null) {
mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
}
}
@Override
protected void onAnimationEnd() {
try {
super.onAnimationEnd();
}
catch (Exception e) {
Log.d("erez", "animation onAnimationEnd");
if (mFirebaseAnalytics != null && e != null && e.getMessage() != null) {
Bundle bundleCatch = new Bundle();
bundleCatch.putString(FirebaseAnalytics.Param.ITEM_ID, "myrecycleview e: " + e.getMessage());
bundleCatch.putString(FirebaseAnalytics.Param.ITEM_NAME, "myrecycleview e: " + e.getMessage());
bundleCatch.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "onAnimationEnd catched");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundleCatch);
}
}
catch (NoClassDefFoundError ncdfe) {
if (mFirebaseAnalytics != null && ncdfe != null && ncdfe.getMessage() != null) {
Bundle bundleCatch = new Bundle();
bundleCatch.putString(FirebaseAnalytics.Param.ITEM_ID, "myrecycleview ncdfe: " + ncdfe.getMessage());
bundleCatch.putString(FirebaseAnalytics.Param.ITEM_NAME, "myrecycleview ncdfe: " + ncdfe.getMessage());
bundleCatch.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "onAnimationEnd catched");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundleCatch);
}
}
}
}
Как вы видите, я пытаюсь переопределить onAnimationEnd, чтобы написать журнал catch в firebase, но он не попал туда и все еще терпит крах для пользователей.
Во всяком случае, этот MyRecyclerView удерживается как член в моей деятельности:
Я установил его findViewById, а затем:
LinearLayoutManager layoutManager = new LinearLayoutManager(Player.this);
if (mScreenOrientation == Configuration.ORIENTATION_PORTRAIT) {
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
} else if (mScreenOrientation == Configuration.ORIENTATION_LANDSCAPE) {
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
}
mRecycleViewPreviewedVideos.setLayoutManager(layoutManager);
и затем я установил его адаптер, как видно пользователям здесь. ничего особенного. Я знаю, что у View есть метод с именем onAnimationEnd, но он никогда не достигает его в моем смартфоне. она достигла лишь на Api 19 в основном. (а также 17 и 18).
Кто-нибудь получил этот крах когда-либо? как это исправить?
ОБНОВИТЬ
Я сообщил об ошибке здесь: https://issuetracker.google.com/issues/73048586