Change behavior back button

This commit is contained in:
Margaux Clerc 2014-12-03 15:10:36 +01:00
parent e8e049083a
commit 1c2419bcd0
2 changed files with 30 additions and 37 deletions

View file

@ -293,8 +293,8 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte
contacts = contactsList;
cursor = c;
margin = LinphoneUtils.pixelsToDpi(getResources(), 10);
bitmapUnknown = BitmapFactory.decodeResource(getResources(), R.drawable.unknown_small);
margin = LinphoneUtils.pixelsToDpi(LinphoneActivity.instance().getResources(), 10);
bitmapUnknown = BitmapFactory.decodeResource(LinphoneActivity.instance().getResources(), R.drawable.unknown_small);
}
public int getCount() {

View file

@ -377,13 +377,23 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
R.anim.slide_out_right_to_left);
}
}
try {
getSupportFragmentManager().popBackStackImmediate(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
} catch (java.lang.IllegalStateException e) {
if (newFragmentType == FragmentsAvailable.DIALER
|| newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_CHAT
|| newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS
|| newFragmentType == FragmentsAvailable.SETTINGS
|| newFragmentType == FragmentsAvailable.CONTACTS
|| newFragmentType == FragmentsAvailable.CHATLIST
|| newFragmentType == FragmentsAvailable.HISTORY) {
try {
getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
} catch (java.lang.IllegalStateException e) {
}
} else {
transaction.addToBackStack(newFragmentType.toString());
}
transaction.addToBackStack(newFragmentType.toString());
transaction.replace(R.id.fragmentContainer, newFragment, newFragmentType.toString());
transaction.commitAllowingStateLoss();
getSupportFragmentManager().executePendingTransactions();
@ -430,22 +440,25 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
transaction.setCustomAnimations(R.anim.slide_in_left_to_right, R.anim.slide_out_left_to_right, R.anim.slide_in_right_to_left, R.anim.slide_out_right_to_left);
}
}
try {
getSupportFragmentManager().popBackStackImmediate(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
} catch (java.lang.IllegalStateException e) {
}
transaction.addToBackStack(newFragmentType.toString());
transaction.replace(R.id.fragmentContainer, newFragment);
}
transaction.commitAllowingStateLoss();
getSupportFragmentManager().executePendingTransactions();
currentFragment = newFragmentType;
if (currentFragment == FragmentsAvailable.DIALER) {
fragmentsHistory.clear();
if (newFragmentType == FragmentsAvailable.DIALER
|| newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_CHAT
|| newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS
|| newFragmentType == FragmentsAvailable.SETTINGS
|| newFragmentType == FragmentsAvailable.CONTACTS
|| newFragmentType == FragmentsAvailable.CHATLIST
|| newFragmentType == FragmentsAvailable.HISTORY) {
try {
getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
} catch (java.lang.IllegalStateException e) {
}
}
fragmentsHistory.add(currentFragment);
}
@ -1374,26 +1387,6 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
if (currentFragment == FragmentsAvailable.SETTINGS) {
updateAnimationsState();
}
fragmentsHistory.remove(fragmentsHistory.size() - 1);
if (fragmentsHistory.size() > 0) {
FragmentsAvailable newFragmentType = fragmentsHistory.get(fragmentsHistory.size() - 1);
LinearLayout ll = (LinearLayout) findViewById(R.id.fragmentContainer2);
if (newFragmentType.shouldAddItselfToTheRightOf(currentFragment)) {
ll.setVisibility(View.VISIBLE);
} else {
if (newFragmentType == FragmentsAvailable.DIALER
|| newFragmentType == FragmentsAvailable.ABOUT
|| newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_CHAT
|| newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS
|| newFragmentType == FragmentsAvailable.SETTINGS
|| newFragmentType == FragmentsAvailable.ACCOUNT_SETTINGS) {
ll.setVisibility(View.GONE);
} else {
ll.setVisibility(View.INVISIBLE);
}
}
}
}
}
} else if (keyCode == KeyEvent.KEYCODE_MENU && statusFragment != null) {