From 74a94059c6b12c2dbbf2d475d6c09a665482a4e7 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Wed, 8 Apr 2015 10:47:22 -0700 Subject: [PATCH] Fix crash when removing draw listener The same behavior can be achieved by using a predraw listener, which can be removed while the callback is called, so it doesn't crash. Change-Id: I3a7138ba49936159dc95b7758c9603366dcf808c --- core/java/android/widget/ActionMenuPresenter.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/java/android/widget/ActionMenuPresenter.java b/core/java/android/widget/ActionMenuPresenter.java index 710d59eba6356..36bce0bdbdeef 100644 --- a/core/java/android/widget/ActionMenuPresenter.java +++ b/core/java/android/widget/ActionMenuPresenter.java @@ -381,12 +381,13 @@ public class ActionMenuPresenter extends BaseMenuPresenter computeMenuItemAnimationInfo(true); final ViewTreeObserver observer = menuViewParent.getViewTreeObserver(); if (observer != null) { - observer.addOnDrawListener(new ViewTreeObserver.OnDrawListener() { + observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override - public void onDraw() { + public boolean onPreDraw() { computeMenuItemAnimationInfo(false); - observer.removeOnDrawListener(this); + observer.removeOnPreDrawListener(this); runItemAnimations(); + return true; } }); }