getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, conversationListFragment)
.add(R.id.fragment_container, contactListFragment).hide(contactListFragment).show(conversationListFragment)
.commit();
就会add新的ConversationListFragment,ContactListFragment对象,而以前add的三个fragment并没有被remove掉,所以MainActivity就会加载多个ConversationListFragment,ContactListFragment,SettingsFragment。
···
//umeng api
MobclickAgent.updateOnlineConfig(this);
UmengUpdateAgent.setUpdateOnlyWifi(false);
UmengUpdateAgent.update(this);
if (getIntent().getBooleanExtra(Constant.ACCOUNT_CONFLICT, false) && !isConflictDialogShow) {
showConflictDialog();
} else if (getIntent().getBooleanExtra(Constant.ACCOUNT_REMOVED, false) && !isAccountRemovedDialogShow) {
showAccountRemovedDialog();
}
inviteMessgeDao = new InviteMessgeDao(this);
userDao = new UserDao(this);
fragments = new Fragment[3];
if (savedInstanceState == null) {
conversationListFragment = new ConversationListFragment();
contactListFragment = new ContactListFragment();
settingFragment = new SettingsFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, conversationListFragment, "switcher:" + 0)
.add(R.id.fragment_container, contactListFragment, "switcher:" + 1).hide(contactListFragment).show(conversationListFragment)
.commit();
} else {
conversationListFragment = (ConversationListFragment) getSupportFragmentManager().findFragmentByTag("switcher:" + 0);
contactListFragment = (ContactListFragment) getSupportFragmentManager().findFragmentByTag("switcher:" + 1);
settingFragment = (SettingsFragment) getSupportFragmentManager().findFragmentByTag("switcher:" + 2);
if (conversationListFragment == null) {
conversationListFragment = new ConversationListFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, conversationListFragment, "switcher:" + 0);
}
if (contactListFragment == null) {
contactListFragment = new ContactListFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, contactListFragment, "switcher:" + 1);
}
if (settingFragment == null) {
settingFragment = new SettingsFragment();
getSupportFragmentManager().beginTransaction().hide(contactListFragment).show(conversationListFragment)
.commit();
} else {
getSupportFragmentManager().beginTransaction().hide(contactListFragment).hide(settingFragment).show(conversationListFragment)
.commit();
}
}
fragments[0] = conversationListFragment;
fragments[1] = contactListFragment;
fragments[2] = settingFragment;
//注册local广播接收者,用于接收demohelper中发出的群组联系人的变动通知
registerBroadcastReceiver();
EMClient.getInstance().contactManager().setContactListener(new MyContactListener());
//内部测试方法,请忽略
registerInternalDebugReceiver();
EMLog.d(TAG, "width:" + getScreenWidth(this) + " height:" + getScreenHeight(this));
···
···
if (currentTabIndex != index) {
FragmentTransaction trx = getSupportFragmentManager().beginTransaction();
trx.hide(fragments[currentTabIndex]);
if (!fragments[index].isAdded()) {
trx.add(R.id.fragment_container, fragments[index], "switcher:" + index);
}
trx.show(fragments[index]).commit();
}
···