diff --git a/src/org/linphone/ContactsFragment.java b/src/org/linphone/ContactsFragment.java index b96254083..a013fceb7 100644 --- a/src/org/linphone/ContactsFragment.java +++ b/src/org/linphone/ContactsFragment.java @@ -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() { diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 5ad017ade..e39be9061 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -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) {