导航到当前活动时关闭抽屉

时间:2014-06-16 15:55:25

标签: android android-layout android-activity

我正在使用导航抽屉,并且遇到一个小问题。当我在我的活动中时,会出现问题,并通过导航抽屉导航到同一活动。活动启动新功能(屏幕弹出)。

当用户试图导航到他们当前所在的活动时,我希望抽屉关闭。

谢谢你的帮助!

3 个答案:

答案 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为空,则表示当前未添加到管理器的活动中,也未添加到后台堆栈中。在这种情况下,将新片段添加到片段容器中。如果没有,只需关闭导航抽屉。