Dbrant has uploaded a new change for review. https://gerrit.wikimedia.org/r/295604
Change subject: Whoops: Fix possible fragment duplication. ...................................................................... Whoops: Fix possible fragment duplication. Also fix options menu behavior when switching between fragments. Change-Id: If83dd623b657f4b7be1689f0f3fff1f8998fd6d1 --- M app/src/main/java/org/wikipedia/MainActivity.java M app/src/main/java/org/wikipedia/MainActivityToolbarCoordinator.java M app/src/main/java/org/wikipedia/page/PageFragment.java 3 files changed, 13 insertions(+), 17 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/04/295604/1 diff --git a/app/src/main/java/org/wikipedia/MainActivity.java b/app/src/main/java/org/wikipedia/MainActivity.java index 7e4812a..ec48b51 100644 --- a/app/src/main/java/org/wikipedia/MainActivity.java +++ b/app/src/main/java/org/wikipedia/MainActivity.java @@ -579,14 +579,16 @@ } resetFragmentsToFeedOrPage(); - FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); - trans.setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out); - trans.add(R.id.content_fragment_container, f); - trans.addToBackStack(null); - if (allowStateLoss) { - trans.commitAllowingStateLoss(); - } else { - trans.commit(); + if (getTopFragment() == null || (getTopFragment().getClass() != f.getClass())) { + FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); + trans.setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out); + trans.add(R.id.content_fragment_container, f); + trans.addToBackStack(null); + if (allowStateLoss) { + trans.commitAllowingStateLoss(); + } else { + trans.commit(); + } } afterFragmentChanged(); } diff --git a/app/src/main/java/org/wikipedia/MainActivityToolbarCoordinator.java b/app/src/main/java/org/wikipedia/MainActivityToolbarCoordinator.java index 78e6303..1162bcb 100644 --- a/app/src/main/java/org/wikipedia/MainActivityToolbarCoordinator.java +++ b/app/src/main/java/org/wikipedia/MainActivityToolbarCoordinator.java @@ -23,6 +23,7 @@ public void setOverrideToolbar(@NonNull Toolbar toolbar) { overrideToolbar = toolbar; + defaultToolbar.getMenu().clear(); toolbarContainerView.setVisibility(View.GONE); setActivityToolbar(overrideToolbar); } diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.java b/app/src/main/java/org/wikipedia/page/PageFragment.java index 7457550..c0df2ec 100755 --- a/app/src/main/java/org/wikipedia/page/PageFragment.java +++ b/app/src/main/java/org/wikipedia/page/PageFragment.java @@ -635,7 +635,8 @@ @Override public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - if (!isAdded() || getMainActivity().isSearching()) { + if (!isAdded() || getMainActivity().isSearching() + || !(getMainActivity().getTopFragment() instanceof PageFragment)) { return; } @@ -646,14 +647,6 @@ MenuItem contentIssues = menu.findItem(R.id.menu_page_content_issues); MenuItem similarTitles = menu.findItem(R.id.menu_page_similar_titles); MenuItem themeChooserItem = menu.findItem(R.id.menu_page_font_and_theme); - - if (otherLangItem == null) { - // On API <= 19, it looks like onPrepareOptionsMenu can be called before the menu - // is actually inflated. - // TODO: remove when this is better understood. - L.logRemoteErrorIfProd(new RuntimeException("onPrepareOptionsMenu called with empty menu.")); - return; - } if (pageLoadStrategy.isLoading() || errorState) { otherLangItem.setEnabled(false); -- To view, visit https://gerrit.wikimedia.org/r/295604 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If83dd623b657f4b7be1689f0f3fff1f8998fd6d1 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits