在Android中打开或关闭片段时,导航抽屉在Android中滞后
我做了一个项目,其中有导航抽屉,当我从可扩展的listview中打开任何片段时,抽屉会挂起2到3秒钟,然后显示新片段 有人知道这件事吗 HomeActivity.java在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);
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:我不能但我有这个代码让你明白。好的,我会更新你。