private void checkLocalRepository(File localDir) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if (localDir != null && settings.getBoolean("repository_initialized", false)) { Log.d("PASS", "Check, dir: " + localDir.getAbsolutePath()); // do not push the fragment if we already have it if (fragmentManager.findFragmentByTag("PasswordsList") == null || settings.getBoolean("repo_changed", false)) { settings.edit().putBoolean("repo_changed", false).apply(); // todo move this as it is duplicated upthere! if (fragmentManager.findFragmentByTag("PasswordsList") != null) { fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } // clean things up if (fragmentManager.findFragmentByTag("ToCloneOrNot") != null) { fragmentManager.popBackStack(); } plist = new PasswordFragment(); Bundle args = new Bundle(); args.putString("Path", PasswordRepository.getWorkTree().getAbsolutePath()); plist.setArguments(args); fragmentTransaction.addToBackStack("passlist"); getSupportActionBar().show(); fragmentTransaction.replace(R.id.main_layout, plist, "PasswordsList"); fragmentTransaction.commit(); } } else { // if we still have the pass list (after deleting the repository for instance) remove it if (fragmentManager.findFragmentByTag("PasswordsList") != null) { fragmentManager.popBackStack(); } getSupportActionBar().hide(); ToCloneOrNot cloneFrag = new ToCloneOrNot(); fragmentTransaction.replace(R.id.main_layout, cloneFrag, "ToCloneOrNot"); fragmentTransaction.commit(); } }