在Android中打开或关闭片段时,导航抽屉在Android中滞后

在Android中打开或关闭片段时,导航抽屉在Android中滞后,android,android-studio,android-fragments,navigation-drawer,lag,Android,Android Studio,Android Fragments,Navigation Drawer,Lag,我做了一个项目,其中有导航抽屉,当我从可扩展的listview中打开任何片段时,抽屉会挂起2到3秒钟,然后显示新片段 有人知道这件事吗 HomeActivity.java private void setFragment(int grpPos, int childPos, String fragmentName, boolean isDrawerToBeClosed) { try { imgHome.setVisibility(View.GONE);

我做了一个项目,其中有导航抽屉,当我从可扩展的listview中打开任何片段时,抽屉会挂起2到3秒钟,然后显示新片段

有人知道这件事吗

HomeActivity.java

private void setFragment(int grpPos, int childPos, String fragmentName, boolean isDrawerToBeClosed) {
        try {
            imgHome.setVisibility(View.GONE);
            switch (grpPos) {
                case 0:
                    callHomeFragment();
                    break;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

private void callHomeFragment() {
        try {
            FragmentManager fragmentManager = getSupportFragmentManager();
            Fragment fragmentExisting = fragmentManager.findFragmentByTag(
                    getResources().getString(R.string.menu_home));
            if (fragmentExisting != null) {
                Fragment Home = fragmentManager.findFragmentByTag(getResources().getString(R.string.menu_home));
                if (fragmentExisting.equals(Home)) {
                    Fragment fragment2 = new HomeFragment();
                    fragmentManager.beginTransaction().replace(R.id.fragment_content_frame, fragment2,
                            getResources().getString(R.string.menu_home)).commit();
                }
                showFragment(fragmentExisting, fragmentManager);
                drawer.closeDrawer(GravityCompat.START);
            } else {
                Fragment fragment = new HomeFragment();
                fragmentManager.beginTransaction().replace(R.id.fragment_content_frame, fragment,
                        getResources().getString(R.string.menu_home)).commit();
                drawer.closeDrawer(GravityCompat.START);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

private void showFragment(Fragment fragmentExisting, FragmentManager fragmentManager) {
        FragmentManager fragmentManagerInternal = getSupportFragmentManager();
        for (int i = 0; i < fragmentManagerInternal.getBackStackEntryCount(); ++i) {
            fragmentManagerInternal.popBackStack();
        }
        fragmentManagerInternal.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

        try {
            List<Fragment> fragments = fragmentManager.getFragments();
            if (fragments != null && fragments.size() > 0) {
                for (int i = 0; i < fragments.size(); i++) {
                    if (fragments.get(i) != null) {
                        fragmentManager.beginTransaction().hide(fragments.get(i)).commit();
                    }
                }
            }
            fragmentManager.beginTransaction().show(fragmentExisting).commit();
        } catch (Exception exception) {
//            ((MyApplication) getApplicationContext()).printStackTrace(exception);
        }
    }
private void setFragment(int grpPos,int childPos,String fragmentName,boolean isDrawerToBeClosed){
试一试{
imgHome.setVisibility(View.GONE);
交换机(grpPos){
案例0:
callHomeFragment();
打破
}
}捕获(例外e){
e、 printStackTrace();
}
}
私有void callHomeFragment(){
试一试{
FragmentManager FragmentManager=getSupportFragmentManager();
Fragment fragmentExisting=fragmentManager.findFragmentByTag(
getResources().getString(R.string.menu_home));
if(fragmentExisting!=null){
Fragment Home=fragmentManager.findFragmentByTag(getResources().getString(R.string.menu_Home));
if(碎片存在。等于(主){
Fragment fragment2=新的HomeFragment();
fragmentManager.beginTransaction().replace(R.id.fragment\u content\u frame,fragment2,
getResources().getString(R.string.menu_home)).commit();
}
showFragment(fragmentExisting,fragmentManager);
抽屉。关闭抽屉(重力压缩机启动);
}否则{
Fragment Fragment=新的HomeFragment();
fragmentManager.beginTransaction().replace(R.id.fragment\u content\u frame,
getResources().getString(R.string.menu_home)).commit();
抽屉。关闭抽屉(重力压缩机启动);
}
}捕获(例外e){
e、 printStackTrace();
}
}
私有void showFragment(Fragment fragmentExisting,FragmentManager FragmentManager){
FragmentManager FragmentManager内部=getSupportFragmentManager();
对于(int i=0;i0){
对于(int i=0;i
我在片段调用中添加了postdelayed方法,效果很好

private void setFragment(int grpPos, int childPos, String fragmentName, boolean isDrawerToBeClosed) {
        try {
            imgHome.setVisibility(View.GONE);
            switch (grpPos) {
                case 0:
                    runnableCode = new Runnable() {
                        @Override
                        public void run() {
                            callHomeFragment();
                        }
                    };
                    handler.postDelayed(runnableCode, 200);
                    break;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我已经在片段调用中添加了postdayed方法,效果很好

private void setFragment(int grpPos, int childPos, String fragmentName, boolean isDrawerToBeClosed) {
        try {
            imgHome.setVisibility(View.GONE);
            switch (grpPos) {
                case 0:
                    runnableCode = new Runnable() {
                        @Override
                        public void run() {
                            callHomeFragment();
                        }
                    };
                    handler.postDelayed(runnableCode, 200);
                    break;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

你能分享屏幕吗?@Sachin:我不能但我有这个代码让你明白。好的,我会更新你。你能分享屏幕吗?@Sachin:我不能但我有这个代码让你明白。好的,我会更新你。