Skip to content

Commit c7f8186

Browse files
committed
Fix for actionbar 'up' fix when rotating
We seem to lose the mediaDetails fragment when we change state. Noooooo!
1 parent 8589aaa commit c7f8186

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,25 @@ protected void onCreate(Bundle savedInstanceState) {
103103
contributionsList = (ContributionsListFragment)getSupportFragmentManager().findFragmentById(R.id.contributionsListFragment);
104104

105105
getSupportFragmentManager().addOnBackStackChangedListener(this);
106+
if (savedInstanceState != null) {
107+
mediaDetails = (MediaDetailPagerFragment)getSupportFragmentManager().findFragmentById(R.id.contributionsFragmentContainer);
108+
// onBackStackChanged uses mediaDetails.isVisible() but this returns false now.
109+
// Use the saved value from before pause or orientation change.
110+
if (mediaDetails != null && savedInstanceState.getBoolean("mediaDetailsVisible")) {
111+
// Feels awful that we have to reset this manually!
112+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
113+
}
114+
}
106115

107116
requestAuthToken();
108117
}
109118

119+
@Override
120+
protected void onSaveInstanceState(Bundle outState) {
121+
super.onSaveInstanceState(outState);
122+
outState.putBoolean("mediaDetailsVisible", (mediaDetails != null && mediaDetails.isVisible()));
123+
}
124+
110125
private void showDetail(int i) {
111126
if(mediaDetails == null ||!mediaDetails.isVisible()) {
112127
mediaDetails = new MediaDetailPagerFragment();

0 commit comments

Comments
 (0)