[英]Application legging when fragment changed by Navigation Drawer
新的支持庫提供了導航抽屜
這是代碼
FragmentManager fragmentManager;
Fragment fragment;
fragmentManager=getSupportFragmentManager();
fragment= fragmentManager.findFragmentById(R.id.list_view_container);
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
if (navigationView != null) {
setupNavigationDrawerContent(navigationView);
}
setupNavigationDrawerContent(navigationView);
private void setupNavigationDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.home:
menuItem.setChecked(true);
drawerLayout.closeDrawer(GravityCompat.START);
fragment = new HomeFragment();
fragmentManager.beginTransaction().replace(R.id.list_view_container,fragment).commit();
return true;
case R.id.current_event:
menuItem.setChecked(true);
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.college_events:
menuItem.setChecked(true);
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.national_events:
menuItem.setChecked(true);
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.workshops:
menuItem.setChecked(true);
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.trainings:
menuItem.setChecked(true);
Toast.makeText(MainActivity.this, "Launching " + menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.companies:
menuItem.setChecked(true);
Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.talents:
menuItem.setChecked(true);
Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.games:
menuItem.setChecked(true);
Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.submission:
menuItem.setChecked(true);
Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.about:
menuItem.setChecked(true);
Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
return true;
}
});
}
因此,當我單擊HOME
,片段正在更改,但關閉時導航抽屜綁扎,並且當向后拉導航抽屜時,在比jellyBean大的設備中,運行過程像地獄一樣掛了,但是在果凍豆和pre果凍豆設備。 我的應用程序是使用最新的api編譯的,它是23,請幫幫我。
因此,當我刪除片段更改代碼時,根本不要打腿。 所以我認為片段更改代碼出了點問題。
您的問題來自主線程上的圖像繪制。 關閉抽屜與創建要顯示的片段的時間相同。 如果有任何操作導致UI線程凍結,則抽屜將停止移動,這非常明顯。
任何大型操作都必須在后台線程中完成。 http://developer.android.com/training/displaying-bitmaps/process-bitmap.html
每次單擊NavigationView項時,我都使用add()
方法來更改片段,而不是replace()
,它用於在每次單擊時向活動添加一個新片段。 好吧,我剛接觸android應用程序開發時就問了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.