Текущий макет моей деятельности:
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
android:id = "@+id/drawerLayout"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:fitsSystemWindows = "true">
<RelativeLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<include
android:layout_height = "wrap_content"
android:layout_width = "match_parent"
android:id = "@+id/main_toolbar"
layout = "@layout/main_toolbar"/>
<FrameLayout
android:id = "@+id/flMainContainer"
android:layout_below = "@id/main_toolbar"
android:layout_width = "match_parent"
android:layout_height = "match_parent"/>
</RelativeLayout>
<android.support.design.widget.NavigationView
android:id = "@+id/nav_view"
android:layout_width = "wrap_content"
android:layout_height = "match_parent"
android:layout_gravity = "start"
android:fitsSystemWindows = "true"
app:menu = "@menu/drawer_view"
app:headerLayout = "@layout/header"/>
</android.support.v4.widget.DrawerLayout>
По сути, это просто панель инструментов и FrameLayout (контейнер, заполненный фрагментами). Из-за этого каждый фрагмент получает эту панель инструментов, которая мне нужна только в MainActivity. Как мне это обойти? У некоторых фрагментов есть собственная панель инструментов, но поскольку только FrameLayout в действии заменяется макетом фрагмента, панель инструментов действия всегда присутствует.
Если я даю фрагменту его собственную панель инструментов, панель инструментов действия по-прежнему будет отображаться над панелью инструментов фрагмента - я хочу, чтобы вместо этого она заменила панель инструментов.
В моем AndroidManifest я установил свою тему NoActionBar.
Ценю любую помощь!
В вашем фрагменте first в onViewCreated(..) используйте это: -
if (getActivity()!=null)
getActivity().findViewById(R.id.main_toolbar).setVisibility(View.GONE);
он говорит, что не требует этой панели инструментов ни в каком другом фрагменте !! @Valentun
он сказал, что у него есть только НЕКОТОРЫЕ фрагменты с собственными панелями инструментов. Кстати, я думаю, что если фрагмент изменит состояние родительской активности, он должен восстановить исходное состояние после того, как он исчезнет с экрана
Как бы то ни было, я думаю, что приведенное выше решение в любом случае соответствует его требованиям !! @Valentun
да, я только что сделал замечание, которое может быть полезно. Вы можете добавить его в ответ, если хотите. В любом случае ваше решение правильное
Именно то, что мне нужно, спасибо @SantanuSur и @Valentun!
если вам не нужна панель инструментов в действии. Удалите этот код из своего макета:
<include android:layout_height = "wrap_content" android:layout_width = "match_parent" android:id = "@+id/main_toolbar" layout = "@layout/main_toolbar"/>
Но автор сказал, что скрывать панель инструментов нужно только в НЕКОТОРЫХ фрагментах.
если вам не нужна панель инструментов в вашей деятельности. Удалите этот код из своего макета
<include
android:layout_height = "wrap_content"
android:layout_width = "match_parent"
android:id = "@+id/main_toolbar"
layout = "@layout/main_toolbar"/>
Также для видимости необходимо снова установить значение VISIBLE в onDestroyView.