我使用NavigationView小部件创建一个用于我的应用程序的侧边菜单。我决定在NavigationView菜单中为每个项目使用单独的活动。所以,如果我打开,例如,"设置"语音将加载设置活动。它的工作方式与预期相符,但问题是NavigationView没有时间完成关闭动画mDrawerLayout.closeDrawers();
新活动的启动。如何在开始新活动之前添加一些延迟以允许完成mDrawerLayout.closeDrawers();
?
P.S。在startActivity之前移动mDrawerLayout.closeDrawers();
并没有帮助。
这是我的代码:
private void addDrawerItems() {
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
switch (menuItem.getItemId()) {
case R.id.menu_main:
//Do something
break;
case R.id.menu_monitor:
Intent i = new Intent(Main_activity.this, Monitor_Activity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
break;
case R.id.menu_settings:
//Do something
break;
}
mDrawerLayout.closeDrawers();
return true;
}
});
}
答案 0 :(得分:0)
我在论坛中找到了一个解决方案,它添加了一个DrawerListener并在NavigationDrawer完成关闭动画后启动新的Activity:
mDrawerLayout.setDrawerListener( new DrawerLayout.SimpleDrawerListener() {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
Intent i = new Intent(Main_activity.this, Monitor_Activity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
}
});
mDrawerLayout.closeDrawers();