这是我第一次使用Fragments,我对Android还是个新手。我正在使用Fragments来管理我的应用程序的设置菜单。
我有一个带有FragmentContainerView的MainActivity,XML是这样的:
<androidx.fragment.app.FragmentContainerView
android:visibility="gone"
android:id="@+id/main_activity_fragment_container"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
在MainActivity.java文件中,我为一个按钮分配了一个方法,以使FragmentContainerView可见,如下所示:
private void showFragments(FragmentContainerView fragmentContainerView) {
fragmentContainerView.setVisibility(View.VISIBLE);
// There is more to this method, but I don't think it is necessary for this example
}
我可以在所有设置菜单中导航:膨胀片段、替换片段、更新共享首选项、使用浏览器意图等--我需要为设置菜单做的一切。
我还没弄清楚的是如何在选择完成后关闭设置菜单(关闭MainActivity中的FragmentContainerView)(从而返回游戏)。我可以在每个片段中创建一个“关闭”按钮--但我不能弄清楚关闭MainActivity的FragmentContainerView的方法(将可见性设置为GONE)。
***一旦我在片段中-是否有可能访问片段所在的FragmentContainerView?***我尝试了多种方法来访问它并将可见性设置为GONE,但我只是遇到了崩溃。
片段内:
FragmentContainerView mainActivityFragmentContainer = (FragmentContainerView) view.findViewById(R.id.main_activity_fragment_container);
public void closeFragment(FragmentContainerView mainActivityFragmentContainer) {
mainActivityFragmentContainer.setVisibility(View.GONE);
// This causes a crash, the error log states:
// NullPointerException: Attempt to invoke virtual method 'void androidx.fragment.app.FragmentContainerView.setVisibility(int)' on a null object reference
}
我知道一个解决方案,我没有让fragmentContainerView填满整个屏幕,并为外部关闭按钮留出空间--但这个解决方案似乎效率低下。任何建议都是有帮助的!
1条答案
按热度按时间7kjnsjlb1#
是的你能做到,
1-在
MainActivity
中创建一个公共函数来关闭片段容器:2-需要时从片段中调用该函数: