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();