从片段隐藏NavigationDrawer和ActionBar

时间:2019-05-24 02:24:47

标签: android android-fragments android-actionbar navigation-drawer

我试图从片段中隐藏NavigationDrawer和ActionBar。

我创建了以下界面,并在活动中实现了相同的界面

  public interface CommonMethodsListener {
      void hideActionbar();
      void showActionbar();
      void setActionBarTitle(String title);
  }

我已经在Activity中实现了以下方法。

  public void setDrawerEnabled(boolean enabled) {
      int lockMode = enabled ? DrawerLayout.LOCK_MODE_UNLOCKED :
              DrawerLayout.LOCK_MODE_LOCKED_CLOSED;
      drawer.setDrawerLockMode(lockMode);
      toggle.setDrawerIndicatorEnabled(enabled);
  }

  @Override
  public void hideActionbar() {
      getSupportActionBar().hide();
      setDrawerEnabled(false);
  }

  @Override
  public void showActionbar() {
      getSupportActionBar().show();
      setDrawerEnabled(true);
  }

我在下面的片段中调用hideActionBar()showActionBar()

  @Override
  public void onResume() {
      super.onResume();
      mCommonMethodsListener.hideActionbar();
  }

  @Override
  public void onPause() {
      super.onPause();
      mCommonMethodsListener.showActionbar();
  }

我无法使用上面的代码隐藏ActionBar和NavigationDrawer。

我有两个分别称为SplashFragmentLoginFragment的片段。我在两个片段中都叫hideActionBar()和'showActionBar()in onResume()and onPause()`。

SplashFragment的加载没有ActionBarNavigationDrawer。在预先设置的3000毫秒延迟后,带有Handler的{​​{1}}将导航到postDelayed

LoginFragment LoginFragmentActionBar一起出现。

build.gradle如下。

NavigationDrawer

2 个答案:

答案 0 :(得分:0)

您应该将片段中的调用方法更改为

onResume()-> onCreate()

onPause()-> onDestroy()

当片段附加到活动时,这两种方法都被调用一次

答案 1 :(得分:0)

更改

mCommonMethodsListener.hideActionbar();
mCommonMethodsListener.setDrawerEnabled(False);

((Activity)getActivity()).hideActionbar();
((Activity)getActivity()).setDrawerEnabled(False);

并将其放入OnCreate()