Скрыть панель инструментов и табуляции в фрагментах - PullRequest
0 голосов
/ 03 мая 2018

Я разрабатывал какое-то приложение, все прошло нормально, каждый раз, когда я оставлял основной фрагмент на панели инструментов, tablayout также уходил, как только я возвращался к панели инструментов основного фрагмента и tablayout, где меня ждали там.

Недавно я протестировал свое приложение на более новом Android 7.0, и в результате панель инструментов и tablayout никуда не уходят, они просто остаются на вершине любого фрагмента.

Я пробовал этот подход:

View view2 = getActivity().findViewById(R.id.tabs);
View view = getActivity().findViewById(R.id.toolbar);
view2.setVisibility(View.GONE);
view.setVisibility(View.GONE);

Используя этот метод, он удаляет табуляцию и панель инструментов сверху, однако, когда я возвращаюсь назад с помощью кнопки «Назад», он также удаляет эти два из основного фрагмента. Я пытался использовать onResume для моего основного фрагмента, но, насколько я понимаю, если только родительский элемент mainactivity не перезагружается, результат не будет отображаться в onResume.

У меня вопрос, как я могу скрыть панель инструментов и tablayout на определенных вложенных фрагментах, не скрывая ее на своем основном фрагменте. Я просмотрел другие вопросы, все говорят о необходимости скрывать их в процессе прокрутки.

Любая помощь будет высоко ценится.

P.s. вот как я настраиваю панель инструментов и табуляцию на моей основной активности:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar); // Setting/replace toolbar as the ActionBar
TabLayout tabLayout = (TabLayout)findViewById(R.id.tabs);
tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.tab0)));
tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.tab1)));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

Редактировать: эти изображения будут лучше иллюстрировать проблему, с которой я столкнулся

Основной фрагмент

второй фрагмент

Основной фрагмент снова

Когда я иду к вложенному фрагменту (Второй фрагмент), я удаляю панель инструментов, но когда я нажимаю назад, чтобы вернуться к Основному фрагменту, она также там удаляется.

Я хочу скрыть его на вложенных фрагментах и ​​оставить на основном фрагменте.

1 Ответ

0 голосов
/ 03 мая 2018

хорошо, мое предположение из вашего заявления выглядит так, как будто вы пытаетесь загрузить. фрагмент в деятельности и не хотите видеть панель инструментов, а также панели вкладок! хорошо, подход, который вы используете, является правильным! использование видимости GONE - способ сделать это, я думаю, то же самое, но проблема заключается в размещении кода! вот как вы должны это сделать!

в вашем контейнере, где вы пытаетесь загрузить фрагмент после выполнения

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar); // Setting/replace toolbar as the ActionBar
TabLayout tabLayout = (TabLayout)findViewById(R.id.tabs);
tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.tab0)));
tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.tab1)));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

вот что вам нужно сделать! просто, когда ваш фрагментTransaction передает фрагмент в контейнер после этой фиксации, вы можете сделать это следующим образом

FragmentManager mFragManager = getSupportFragmentManager();
FragmentTransaction mFragTranscation = mFragManager.startTransaction();
mFragTranscation.add(R.id.containerId,yourFragObject());
mFragTransaction.commit();
//after that you can do the visibility GONE MAGIC
toolbar.setVisibility(View.GONE);
tabLayout.setVisibility(View.GONE);

Вы пытались скрыть часть дизайна Деятельности из фрагмента, если хотите, чтобы это произошло следующим образом, с помощью функции ONACTIVITYCREATED (), но также должен быть способ доступа к представлениям контейнера. во фрагменте, который можно сделать этим методом.

но приведенный выше код поможет, если вы хотите, чтобы дизайн заголовка действия был добавлен при открытии фрагмента! счастливое кодирование

для дальнейшего, если вы хотите, чтобы что-то возвращалось, что было скрыто, вы можете использовать функцию OnBackPressed! делаю это для вас! например, если вы хотите увидеть, что когда основной фрагмент вступает в действие, а TOOLBAR и т. д. должны быть возвращены, вы должны переопределить OnBackPressendMethod и там вы можете проверить, какой фрагмент в настоящее время загружается обратно из стека, и если это «Required One», то просто используйте VISIBLITY (VIEW.VISIBLE) для тех, кому вы хотите вернуться на экран!

переопределить в MainFragment

@Override
public void onBackPressed() {
   //here you can call the things back if the frag required is loaded
}

// попробуйте этот способ добавить фрагмент и добавить его имя в стек

private void replaceFragment (Fragment fragment){
  String backStateName = fragment.getClass().getName();

  FragmentManager manager = getSupportFragmentManager();
  boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);

  if (!fragmentPopped){ //fragment not in back stack, create it.
    FragmentTransaction ft = manager.beginTransaction();
    ft.replace(R.id.content_frame, fragment);
    ft.addToBackStack(backStateName);
    ft.commit();
  }
}

таким образом, вы можете сделать это для получения дополнительной информации, проверьте эту ветку здесь STACK_THREAD

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