【发布时间】:2016-04-06 21:01:47
【问题描述】:
我正在使用 NavigationView 小部件来创建用于我的应用程序的侧边菜单。我决定为 NavigationView 菜单中的每个项目使用单独的活动。所以,如果我打开,例如,“设置”语音将加载设置活动。它按预期工作,但问题是 NavigationView 没有时间完成关闭动画mDrawerLayout.closeDrawers(); 新活动已启动。如何添加某种延迟以允许在开始新活动之前完成 mDrawerLayout.closeDrawers();?
附言在 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;
}
});
}
【问题讨论】:
-
首先,使用导航视图调用新活动是一个坏习惯。电池使用片段...您可以使用处理程序的 postdelay 方法进行延迟
-
我的活动有点复杂,我在一些活动中已经是一个片段选择器。我读过片段中的片段会产生问题,因此我将活动分为活动以避免浪费时间。