Skip to content
Snippets Groups Projects
Commit 5da0fbb5 authored by Alexandre Lision's avatar Alexandre Lision
Browse files

ui: fix back button

Since commit d701f4f0, the back button behaviour has been
broken. We restored the  previous backstack management system.
When cliking the back button, the app displays home. If you are home,
the app closes.

Tuleap: #1162
Change-Id: I919a2697b376d3a54150f6560ba543f2d5d99b8a
parent 76d4bab0
No related branches found
No related tags found
No related merge requests found
...@@ -415,14 +415,21 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call ...@@ -415,14 +415,21 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call
mNavigationDrawer.closeDrawer(GravityCompat.START); mNavigationDrawer.closeDrawer(GravityCompat.START);
return; return;
} }
super.onBackPressed(); if (getFragmentManager().getBackStackEntryCount() > 1) {
FragmentManager fm = getFragmentManager(); popCustomBackStack();
int count = fm.getBackStackEntryCount(); fMenu.getMenu().findItem(R.id.menuitem_home).setChecked(true);
if (count == 0) { return;
fContent = fm.findFragmentByTag(HOME_TAG); }
} else {
FragmentManager.BackStackEntry entry = fm.getBackStackEntryAt(count - 1); finish();
fContent = fm.findFragmentById(entry.getId()); }
private void popCustomBackStack() {
FragmentManager fragmentManager = getFragmentManager();
FragmentManager.BackStackEntry entry = fragmentManager.getBackStackEntryAt(0);
fContent = fragmentManager.findFragmentByTag(entry.getName());
for (int i = 0; i < fragmentManager.getBackStackEntryCount() - 1; ++i) {
fragmentManager.popBackStack();
} }
} }
...@@ -467,7 +474,7 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call ...@@ -467,7 +474,7 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call
fContent = fragmentManager.findFragmentById(R.id.main_frame); fContent = fragmentManager.findFragmentById(R.id.main_frame);
if (fContent == null) { if (fContent == null) {
fContent = new SmartListFragment(); fContent = new SmartListFragment();
fragmentManager.beginTransaction().replace(R.id.main_frame, fContent, HOME_TAG).addToBackStack(HOME_TAG).commitAllowingStateLoss(); fragmentManager.beginTransaction().replace(R.id.main_frame, fContent, HOME_TAG).addToBackStack(HOME_TAG).commit();
} else if (fContent instanceof Refreshable) { } else if (fContent instanceof Refreshable) {
fragmentManager.beginTransaction().replace(R.id.main_frame, fContent).addToBackStack(HOME_TAG).commit(); fragmentManager.beginTransaction().replace(R.id.main_frame, fContent).addToBackStack(HOME_TAG).commit();
((Refreshable) fContent).refresh(); ((Refreshable) fContent).refresh();
...@@ -542,8 +549,11 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call ...@@ -542,8 +549,11 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call
if (fContent instanceof SmartListFragment) { if (fContent instanceof SmartListFragment) {
break; break;
} }
while (getFragmentManager().popBackStackImmediate()) { if (getFragmentManager().getBackStackEntryCount() == 1) {
break;
} }
popCustomBackStack();
fContent = getFragmentManager().findFragmentByTag(HOME_TAG); fContent = getFragmentManager().findFragmentByTag(HOME_TAG);
break; break;
case R.id.menuitem_accounts: case R.id.menuitem_accounts:
...@@ -551,14 +561,20 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call ...@@ -551,14 +561,20 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call
break; break;
} }
fContent = new AccountsManagementFragment(); fContent = new AccountsManagementFragment();
getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, ACCOUNTS_TAG).addToBackStack(ACCOUNTS_TAG).commit(); getFragmentManager().beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.replace(R.id.main_frame, fContent, ACCOUNTS_TAG)
.addToBackStack(ACCOUNTS_TAG).commit();
break; break;
case R.id.menuitem_about: case R.id.menuitem_about:
if (fContent instanceof AboutFragment) { if (fContent instanceof AboutFragment) {
break; break;
} }
fContent = new AboutFragment(); fContent = new AboutFragment();
getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, ABOUT_TAG).addToBackStack(ABOUT_TAG).commit(); getFragmentManager().beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.replace(R.id.main_frame, fContent, ABOUT_TAG)
.addToBackStack(ABOUT_TAG).commit();
break; break;
case R.id.menuitem_prefs: case R.id.menuitem_prefs:
this.goToSettings(); this.goToSettings();
...@@ -585,7 +601,10 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call ...@@ -585,7 +601,10 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(ShareFragment.ARG_URI, fMenuHead.getSelectedAccount().getShareURI()); args.putString(ShareFragment.ARG_URI, fMenuHead.getSelectedAccount().getShareURI());
fContent.setArguments(args); fContent.setArguments(args);
getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, SHARE_TAG).addToBackStack(SHARE_TAG).commit(); getFragmentManager().beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.replace(R.id.main_frame, fContent, SHARE_TAG)
.addToBackStack(SHARE_TAG).commit();
} }
public void goToSettings() { public void goToSettings() {
...@@ -606,8 +625,7 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call ...@@ -606,8 +625,7 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call
.beginTransaction() .beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.replace(R.id.main_frame, fContent, SETTINGS_TAG) .replace(R.id.main_frame, fContent, SETTINGS_TAG)
.addToBackStack(SETTINGS_TAG) .addToBackStack(SETTINGS_TAG).commit();
.commit();
} }
@Override @Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment