From c7f8186eda3eb611b906275cac432dec5ecd7f7f Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Fri, 24 May 2013 11:23:52 +0200 Subject: [PATCH] Fix for actionbar 'up' fix when rotating We seem to lose the mediaDetails fragment when we change state. Noooooo! --- .../contributions/ContributionsActivity.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java index ea25e7956..a77689ba9 100644 --- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java +++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java @@ -103,10 +103,25 @@ public class ContributionsActivity contributionsList = (ContributionsListFragment)getSupportFragmentManager().findFragmentById(R.id.contributionsListFragment); getSupportFragmentManager().addOnBackStackChangedListener(this); + if (savedInstanceState != null) { + mediaDetails = (MediaDetailPagerFragment)getSupportFragmentManager().findFragmentById(R.id.contributionsFragmentContainer); + // onBackStackChanged uses mediaDetails.isVisible() but this returns false now. + // Use the saved value from before pause or orientation change. + if (mediaDetails != null && savedInstanceState.getBoolean("mediaDetailsVisible")) { + // Feels awful that we have to reset this manually! + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + } + } requestAuthToken(); } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putBoolean("mediaDetailsVisible", (mediaDetails != null && mediaDetails.isVisible())); + } + private void showDetail(int i) { if(mediaDetails == null ||!mediaDetails.isVisible()) { mediaDetails = new MediaDetailPagerFragment();