解决Fragment重影问题

来源:互联网 发布:ocr软件输出格式 编辑:程序博客网 时间:2024/04/29 14:49

优化Add添加Fragment,在使用hide、show中解决重影问题

初始化中

private FragmentManager fragmentManager;private List<BaseFragment> fragmentList = new ArrayList<BaseFragment>();//用于记录当前显示的Fragmentprivate int currentIndex = 0;protected void initData() {fragmentManager = getSupportFragmentManager();//初始化三个Fragment//不走任何生命周期方法conversationFragment = new ConversationFragment();contactFragment = new ContactFragment();pluginFragment = new PluginFragment();fragmentList.add(conversationFragment);fragmentList.add(contactFragment);fragmentList.add(pluginFragment);Fragment fragment0 = fragmentManager.findFragmentByTag("0");if (fragment0 != null) {fragmentManager.beginTransaction().remove(fragment0).commit();}Fragment fragment1 = fragmentManager.findFragmentByTag("1");if (fragment1 != null) {fragmentManager.beginTransaction().remove(fragment1).commit();}Fragment fragment2 = fragmentManager.findFragmentByTag("2");if (fragment2 != null) {fragmentManager.beginTransaction().remove(fragment2).commit();}//默认让消息Fragment选中fragmentManager.beginTransaction().add(R.id.fl_content, conversationFragment, "0").commit();currentIndex = 0;}
点击切换Button时

@Overridepublic void onClick(View v) {int index = 0;switch (v.getId()) {case R.id.iv_conversation:index = 0;break;case R.id.iv_contact:index = 1;break;case R.id.iv_plugin:index = 2;break;}if (index == currentIndex) {return;}BaseFragment baseFragment = fragmentList.get(index);FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();//先判断该Fragment是否已经添加到Activity了,如果没有则添加,如果有,则显示if (baseFragment.isAdded()) {//则显示fragmentTransaction.show(baseFragment);} else {//添加fragmentTransaction.add(R.id.fl_content, baseFragment, index + "");}//隐藏之前显示的FragmentfragmentTransaction.hide(fragmentList.get(currentIndex));//提交事务fragmentTransaction.commit();currentIndex = index;}


0 0
原创粉丝点击