通过新的支持库创建导航抽屉
这是代码
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但工作正常在果冻豆和预先果冻豆设备中真的很好。我的应用程序是用最新的api编译的,23请帮帮我。
所以当我删除片段更改代码而不是没有绑定时。 所以我认为片段更改代码有问题。
答案 0 :(得分:0)
您的问题来自主线程上的图像绘制。 关闭抽屉与创建要显示的片段同时发生。如果任何操作导致UI线程冻结,则抽屉停止移动,这是非常明显的。
任何大型操作都必须在后台线程中完成。 http://developer.android.com/training/displaying-bitmaps/process-bitmap.html
答案 1 :(得分:0)
每次我单击NavigationView项时,我使用add()
方法更改片段而不是replace()
,它用于在每次点击时向活动添加一个新片段。好吧,当我刚接触Android应用程序开发时,我问过这个问题。