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