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

Reply via email to