Skip to content

Commit c4bd23f

Browse files
authored
Fix (commons-app#4148) Issues on theme change
* fixed themeChange crashes * fixed comments * Overlooked the title bar
1 parent 2d884b4 commit c4bd23f

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple
3838
@BindView(R.id.explore_container)
3939
FrameLayout container;
4040

41+
public BookmarkListRootFragment(){
42+
//empty constructor necessary otherwise crashes on recreate
43+
}
44+
4145
public BookmarkListRootFragment(Bundle bundle, BookmarksPagerAdapter bookmarksPagerAdapter) {
4246
String title = bundle.getString("categoryName");
4347
int order = bundle.getInt("order");
@@ -65,7 +69,9 @@ public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable final
6569
@Override
6670
public void onViewCreated(@NonNull final View view, @Nullable final Bundle savedInstanceState) {
6771
super.onViewCreated(view, savedInstanceState);
68-
setFragment(listFragment, mediaDetails);
72+
if(savedInstanceState==null) {
73+
setFragment(listFragment, mediaDetails);
74+
}
6975
}
7076

7177
public void setFragment(Fragment fragment, Fragment otherFragment) {

app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,11 @@ public void onCreate(Bundle savedInstanceState) {
113113
setTitle(getString(R.string.explore_tab_title_mobile));
114114
setUpLoggedOutPager();
115115
} else {
116-
setTitle(getString(R.string.contributions_fragment));
116+
if(savedInstanceState == null){
117+
//starting a fresh fragment.
118+
setTitle(getString(R.string.contributions_fragment));
119+
loadFragment(ContributionsFragment.newInstance(),false);
120+
}
117121
setUpPager();
118122
initMain();
119123
}
@@ -124,30 +128,31 @@ public void setSelectedItemId(int id) {
124128
}
125129

126130
private void setUpPager() {
127-
loadFragment(ContributionsFragment.newInstance());
128131
tabLayout.setOnNavigationItemSelectedListener(item -> {
129132
if (!item.getTitle().equals("More")) {
130133
// do not change title for more fragment
131134
setTitle(item.getTitle());
132135
}
133136
Fragment fragment = NavTab.of(item.getOrder()).newInstance();
134-
return loadFragment(fragment);
137+
return loadFragment(fragment,true);
135138
});
136139
}
137140

138141
private void setUpLoggedOutPager() {
139-
loadFragment(ExploreFragment.newInstance());
142+
loadFragment(ExploreFragment.newInstance(),false);
140143
tabLayout.setOnNavigationItemSelectedListener(item -> {
141144
if (!item.getTitle().equals("More")) {
142145
// do not change title for more fragment
143146
setTitle(item.getTitle());
144147
}
145148
Fragment fragment = NavTabLoggedOut.of(item.getOrder()).newInstance();
146-
return loadFragment(fragment);
149+
return loadFragment(fragment,true);
147150
});
148151
}
149152

150-
private boolean loadFragment(Fragment fragment) {
153+
private boolean loadFragment(Fragment fragment,boolean showBottom ) {
154+
//showBottom so that we do not show the bottom tray again when constructing
155+
//from the saved instance state.
151156
if (fragment instanceof ContributionsFragment) {
152157
if (activeFragment == ActiveFragment.CONTRIBUTIONS) { // Do nothing if same tab
153158
return true;
@@ -172,7 +177,7 @@ private boolean loadFragment(Fragment fragment) {
172177
}
173178
bookmarkFragment = (BookmarkFragment) fragment;
174179
activeFragment = ActiveFragment.BOOKMARK;
175-
} else if (fragment == null) {
180+
} else if (fragment == null && showBottom) {
176181
if (applicationKvStore.getBoolean("login_skipped") == true) { // If logged out, more sheet is different
177182
MoreBottomSheetLoggedOutFragment bottomSheet = new MoreBottomSheetLoggedOutFragment();
178183
bottomSheet.show(getSupportFragmentManager(),

app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ public class ExploreListRootFragment extends CommonsDaggerSupportFragment implem
3434
@BindView(R.id.explore_container)
3535
FrameLayout container;
3636

37+
public ExploreListRootFragment(){
38+
//empty constructor necessary otherwise crashes on recreate
39+
}
40+
3741
public ExploreListRootFragment(Bundle bundle) {
3842
String title = bundle.getString("categoryName");
3943
listFragment = new CategoriesMediaFragment();
@@ -55,7 +59,9 @@ public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable final
5559
@Override
5660
public void onViewCreated(@NonNull final View view, @Nullable final Bundle savedInstanceState) {
5761
super.onViewCreated(view, savedInstanceState);
58-
setFragment(listFragment, mediaDetails);
62+
if(savedInstanceState == null) {
63+
setFragment(listFragment, mediaDetails);
64+
}
5965
}
6066

6167
public void setFragment(Fragment fragment, Fragment otherFragment) {

0 commit comments

Comments
 (0)