我正在使用导航抽屉,并且遇到一个小问题。当我在我的活动中时,会出现问题,并通过导航抽屉导航到同一活动。活动启动新功能(屏幕弹出)。
当用户试图导航到他们当前所在的活动时,我希望抽屉关闭。
谢谢你的帮助!
答案 0 :(得分:0)
为什么不检查当前的Activity,伪代码:
if (this instanceof SomeActivity){
closedrawer();
}else{
navigate to SomeActivity
}
答案 1 :(得分:0)
//global reference
private DrawerLayout mDrawerLayout;
//instantiate onCreate()
mDrawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout);
//close it some where, on button click...
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
}
答案 2 :(得分:0)
在方法中,您可以从导航栏中处理点击次数:
// This is for the case where the user is trying to open a fragment called `NewFragment`
Fragment currentFragment = getSupportFragmentManager().findFragmentByTag(NewFragment.TAG);
if (currentFragment == null) {
NewFragment newFragment = new NewFragment()
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment, NewFragment.TAG);
transaction.commit();
}
mDrawerLayout.closeDrawer(mDrawerList);
如果已将片段添加到带有标记的片段容器中,则此方法有效。我通常将其保留为相应片段中的public static final String
。例如,NewFragment
有一个名为TAG的静态String
,可以在以后使用片段管理器查找它。
如果currentFragment
为空,则表示当前未添加到管理器的活动中,也未添加到后台堆栈中。在这种情况下,将新片段添加到片段容器中。如果没有,只需关闭导航抽屉。