Скрыть NavigationDrawer и ActionBar от фрагмента - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь скрыть NavigationDrawer и ActionBar от фрагмента.

Я создал следующий интерфейс и реализовал его в упражнении

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

Я реализовал следующие методы в упражнении.

  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 с указанным выше кодом.

У меня есть два фрагмента, которые называются SplashFragment и LoginFragment,Я вызываю hideActionBar() и 'showActionBar () in onResume () and onPause () `в обоих фрагментах.

SplashFragment загружается без ActionBar и NavigationDrawer.Handler с postDelayed переведет на LoginFragment после заданной задержки 3000 мсек.

LoginFragment показывает с ActionBar и NavigationDrawer.

build.gradle, как показано ниже.

  android {
      compileSdkVersion 28
      defaultConfig {
          applicationId "io.azpire.ncloudpay"
          minSdkVersion 24
          targetSdkVersion 28
          versionCode 1
          versionName "1.0"
          testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
      }
      buildTypes {
          release {
              minifyEnabled false
              proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
          }
      }
      dataBinding {
          enabled = true
      }
  }

  dependencies {
      implementation fileTree(dir: 'libs', include: ['*.jar'])
      implementation 'androidx.appcompat:appcompat:1.0.2'
      implementation 'androidx.legacy:legacy-support-v4:1.0.0'
      implementation 'com.google.android.material:material:1.0.0'
      implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
      implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
      testImplementation 'junit:junit:4.12'
      androidTestImplementation 'androidx.test:runner:1.1.1'
      androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
      implementation 'androidx.navigation:navigation-fragment:2.0.0'
      implementation 'androidx.navigation:navigation-ui:2.0.0'

      implementation "androidx.room:room-runtime:2.1.0-beta01"
      annotationProcessor "androidx.room:room-compiler:2.1.0-beta01"
  }

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Измените

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

на

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

и поместите их в OnCreate ()

0 голосов
/ 24 мая 2019

Вы должны изменить свой вызывающий метод во фрагменте на

onResume () -> onCreate ()

onPause () -> onDestroy ()

Оба эти метода вызываются один раз, когда фрагмент привязан к активности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...