Brion VIBBER has submitted this change and it was merged.

Change subject: Fix crash when rotating phone with multiple pages
......................................................................


Fix crash when rotating phone with multiple pages

- This stops replacing fragments, and just adds them. This *must*
  be fixed at some point since otherwise it will lead to unreasonable
  memory pressure.

Change-Id: I847053b3e38096ee0eb3fc5d2988c3157135d29a
---
M wikipedia/res/layout/fragment_page.xml
M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
2 files changed, 15 insertions(+), 4 deletions(-)

Approvals:
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/wikipedia/res/layout/fragment_page.xml 
b/wikipedia/res/layout/fragment_page.xml
index b4477cf..20dd0f0 100644
--- a/wikipedia/res/layout/fragment_page.xml
+++ b/wikipedia/res/layout/fragment_page.xml
@@ -3,7 +3,9 @@
 
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android";
               android:layout_width="match_parent"
-              android:layout_height="match_parent">
+              android:layout_height="match_parent"
+              android:background="@color/window_background_color"
+        >
     <ProgressBar
         android:id="@+id/page_load_progress"
         android:layout_gravity="center"
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
index 4c65676..fb881d1 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
@@ -3,6 +3,7 @@
 import android.content.*;
 import android.net.*;
 import android.os.*;
+import android.support.v4.app.*;
 import com.squareup.otto.*;
 import org.wikipedia.*;
 import org.wikipedia.events.*;
@@ -49,6 +50,9 @@
         if (savedInstanceState != null) {
             pausedStateOfZero = 
savedInstanceState.getBoolean("pausedStateOfZero");
             pausedXcsOfZero = savedInstanceState.getString("pausedXcsOfZero");
+            if (savedInstanceState.containsKey("curPageFragment")) {
+                curPageFragment = (PageViewFragment) 
getSupportFragmentManager().getFragment(savedInstanceState, "curPageFragment");
+            }
         }
 
         bus = app.getBus();
@@ -82,8 +86,8 @@
         PageViewFragment pageFragment = new PageViewFragment(title, entry, 
R.id.search_fragment);
         getSupportFragmentManager().beginTransaction()
                 .setCustomAnimations(R.anim.slide_in_right, 
R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
-                .replace(R.id.content_frame, pageFragment)
-                .addToBackStack(null)
+                .add(R.id.content_frame, pageFragment, title.getCanonicalUri())
+                .addToBackStack(title.getCanonicalUri())
                 .commit();
         this.curPageFragment = pageFragment;
     }
@@ -128,7 +132,9 @@
                 // Everything we could pop has been popped....
                 finish();
             } else {
-                getSupportFragmentManager().popBackStack();
+                getSupportFragmentManager().popBackStackImmediate();
+                String tag = 
getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount()
 - 1).getName();
+                curPageFragment = (PageViewFragment) 
getSupportFragmentManager().findFragmentByTag(tag);
             }
         }
     }
@@ -238,6 +244,9 @@
         super.onSaveInstanceState(outState);
         outState.putBoolean("pausedStateOfZero", pausedStateOfZero);
         outState.putString("pausedXcsOfZero", pausedXcsOfZero);
+        if (curPageFragment != null) {
+            getSupportFragmentManager().putFragment(outState, 
"curPageFragment", curPageFragment);
+        }
     }
 
     @Override

-- 
To view, visit https://gerrit.wikimedia.org/r/115136
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I847053b3e38096ee0eb3fc5d2988c3157135d29a
Gerrit-PatchSet: 2
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to