Dbrant has uploaded a new change for review. https://gerrit.wikimedia.org/r/167871
Change subject: Fix intermittent NPE in DrawerLayout. ...................................................................... Fix intermittent NPE in DrawerLayout. - This required patching one of the components in the actual v4 Support library. We'll monitor the bug on Google (that I submitted), and see what solution they suggest: https://code.google.com/p/android/issues/detail?id=77926 - Also removed FixedFragmentStatePagerAdapter, since we're no longer using it. Bug: 67808 Change-Id: Ia0b1246659c3f89e915350cc80792b545eece4f9 --- D wikipedia/src/main/java/android/support/v4/app/FixedFragmentStatePagerAdapter.java A wikipedia/src/main/java/android/support/v4/widget/FixedDrawerLayout.java M wikipedia/src/main/java/org/wikipedia/views/DisableableDrawerLayout.java 3 files changed, 38 insertions(+), 31 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/71/167871/1 diff --git a/wikipedia/src/main/java/android/support/v4/app/FixedFragmentStatePagerAdapter.java b/wikipedia/src/main/java/android/support/v4/app/FixedFragmentStatePagerAdapter.java deleted file mode 100644 index eebd065..0000000 --- a/wikipedia/src/main/java/android/support/v4/app/FixedFragmentStatePagerAdapter.java +++ /dev/null @@ -1,28 +0,0 @@ -package android.support.v4.app; - -import android.os.Bundle; -import android.view.ViewGroup; - -/** - * TODO: Remove this class when Google updates the Support library. - * This solves an intermittent crash when using FragmentStatePagerAdapter. - * - * Android bug: https://code.google.com/p/android/issues/detail?id=37484 - */ -public abstract class FixedFragmentStatePagerAdapter extends FragmentStatePagerAdapter { - - public FixedFragmentStatePagerAdapter(FragmentManager fm) { - super(fm); - } - - @Override - public Object instantiateItem(ViewGroup container, int position) { - Fragment f = (Fragment) super.instantiateItem(container, position); - Bundle savedFragmentState = f.mSavedFragmentState; - if (savedFragmentState != null) { - savedFragmentState.setClassLoader(f.getClass().getClassLoader()); - } - return f; - } - -} diff --git a/wikipedia/src/main/java/android/support/v4/widget/FixedDrawerLayout.java b/wikipedia/src/main/java/android/support/v4/widget/FixedDrawerLayout.java new file mode 100644 index 0000000..72a488b --- /dev/null +++ b/wikipedia/src/main/java/android/support/v4/widget/FixedDrawerLayout.java @@ -0,0 +1,34 @@ +package android.support.v4.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +/** + * TODO: Remove this class when Google updates the Support library. + * This solves an intermittent crash when using DrawerLayout. + * + * https://code.google.com/p/android/issues/detail?id=77926 + * + */ +public class FixedDrawerLayout extends DrawerLayout { + public FixedDrawerLayout(Context context) { + super(context); + } + + public FixedDrawerLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public FixedDrawerLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + boolean isContentView(View child) { + if (child == null) { + return false; + } + return super.isContentView(child); + } +} diff --git a/wikipedia/src/main/java/org/wikipedia/views/DisableableDrawerLayout.java b/wikipedia/src/main/java/org/wikipedia/views/DisableableDrawerLayout.java index e880088..94ea07b 100644 --- a/wikipedia/src/main/java/org/wikipedia/views/DisableableDrawerLayout.java +++ b/wikipedia/src/main/java/org/wikipedia/views/DisableableDrawerLayout.java @@ -4,6 +4,7 @@ import android.support.v4.view.GravityCompat; import android.support.v4.view.ViewCompat; import android.support.v4.widget.DrawerLayout; +import android.support.v4.widget.FixedDrawerLayout; import android.support.v4.widget.ViewDragHelper; import android.util.AttributeSet; import android.util.Log; @@ -11,7 +12,7 @@ import android.view.View; import java.lang.reflect.Field; -public class DisableableDrawerLayout extends DrawerLayout { +public class DisableableDrawerLayout extends FixedDrawerLayout { public boolean getSlidingEnabled(int gravity) { return getDrawerLockMode(gravity) == DrawerLayout.LOCK_MODE_UNLOCKED; @@ -58,8 +59,8 @@ ViewCompat.getLayoutDirection(pullOutView)); // Determine whether to modify the left or right dragger, based on RTL/LTR orientation Field mDragger = (absGravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.LEFT - ? DisableableDrawerLayout.this.getClass().getSuperclass().getDeclaredField("mLeftDragger") - : DisableableDrawerLayout.this.getClass().getSuperclass().getDeclaredField("mRightDragger"); + ? DisableableDrawerLayout.this.getClass().getSuperclass().getSuperclass().getDeclaredField("mLeftDragger") + : DisableableDrawerLayout.this.getClass().getSuperclass().getSuperclass().getDeclaredField("mRightDragger"); mDragger.setAccessible(true); ViewDragHelper dragHelper = (ViewDragHelper) mDragger.get(DisableableDrawerLayout.this); Field edgeWidth = dragHelper.getClass().getDeclaredField("mEdgeSize"); -- To view, visit https://gerrit.wikimedia.org/r/167871 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia0b1246659c3f89e915350cc80792b545eece4f9 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
