【发布时间】:2016-07-14 22:59:39
【问题描述】:
我有一个带有导航抽屉和 4 个导航项(片段)的应用。在其中一个片段中,我设置了一个带有视图寻呼机的选项卡布局(另外 3 个片段)。
从这些内部片段之一,我想动态禁用/启用导航抽屉。基本上,在按下按钮时,我想限制对导航抽屉的访问(并在再次按下时重新启用)。
我该怎么做?
我尝试从这个内部片段访问父活动的DrawerLayout。但我看不到启用/禁用导航抽屉的方法。
我将抽屉添加到主 Activity 的方式:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
(当然,我在 onPostCreate 方法中添加了 toggle.syncState()。
【问题讨论】:
-
将
setDrawerLockMode()用于DrawerLayout,将setDrawerIndicatorEnabled()用于ActionBarDrawerToggle。 -
@MikeM。设置
setDrawerLockMode()停止滑动手势。但是要设置setDrawerIndicatorEnabled(),我如何从我的Fragment 中访问ActionBarDrawerToggle? -
理想情况下,您应该通过 Activity 实现的
interface来执行此操作,其中 Activity 中的interface方法调用上述方法。 -
@MikeM。是的,我试着去做。但是事情变得非常复杂,因为我试图在选项卡布局的 ViewPager 中的一个片段中执行此操作,而该片段又包含在主要活动所拥有的片段中:-/ 如果您可以提供任何提示这个(像伪代码?还是基本的代码结构?),真的很棒
-
“但是事情变得非常复杂,因为我试图在选项卡布局的 ViewPager 中的一个片段中执行此操作,而该片段又包含在主要活动所拥有的片段中” -这并不真正相关,因为 Fragment 仍然直接附加到 Activity。将
getActivity()投射到您的interface。
标签: android android-fragments navigation android-toolbar