导航抽屉closures之前加载片段

我已经实现了一个导航抽屉,我想在导航抽屉closures之前加载我的片段。 目前,碎片加载与抽屉closures并行,所以如果碎片很重,用户界面会挂起一点点。

我有的代码是:

private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, fragmentProfile); ft.commit(); drawerLayout.closeDrawer(drawerNaviListView); } } 

我怎样才能改变这个,让我看到我的碎片加载(在后台)第一次,当它完成加载,导航抽屉closures?

Solutions Collecting From Web of "导航抽屉closures之前加载片段"

我的解决scheme是加载片段后closures抽屉:实际调用onDrawerClosed内的loadFragment方法

  public void onDrawerClosed() { // assure the request comes from selecting a menu item, not just closing tab if (selectedTab ) selectItem(mSelectedFragment); selectedTab = false; } 

试图在抽屉closures后加载使用处理程序来创build延迟执行。 所以抽屉closures时不会有任何挂钩

onItemClick()方法中,使用下面的代码:

 Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, fragmentProfile); ft.commit(); } }; handler.postDelayed(runnable, 500); // here 500 is the delay 

//其他的方式是

创build一个AsyncTask并在doInBackground()方法中启动片段事务并closuresonPostExecute()中的抽屉

DrawerLayout.DrawerListener可用于监视抽屉视图的状态和运动。 避免在animation中执行布局等昂贵的操作,因为这会导致口吃; 尝试在STATE_IDLE状态期间执行昂贵的操作。 来源 。

换句话说,Androidbuild议您在交换碎片之前等待抽屉closures。