gpt4 book ai didi

java - Android:有没有办法隐藏 fragment 中的MainActivity布局元素?

转载 作者:行者123 更新时间:2023-12-01 18:34:06 25 4
gpt4 key购买 nike

我的 MainActivity 布局包括一个底部导航栏,因为我想将其用作应用程序 fragment 中的主要导航组件。但是,我有一个登录页面,我不希望导航栏在该页面上可见。由于该 fragment 是从 MainActivity 创建的,因此它继承了导航栏,并且我找不到将其隐藏在登录 fragment 上并在后续 fragment 上显示它的方法。

为了方便:

  1. 我有一个带有 BottomNavigationBar 的 MainActivity 布局
  2. 所有 Fragment 本身都从 MainActivity 布局继承 BottomNavigationBar
  3. 我希望导航栏在用户登录 fragment 上的可见性“消失”
  4. 我希望导航栏的可见性在其余 fragment 上为“VISIBLE”

有办法做到这一点吗?

我在 MainActivity 中定义 BottomNavigationBar 的原因是,我最初在每个 fragment 上都有一个单独的导航栏,这需要每个 fragment 上有单独的监听器(使代码比应有的更广泛)。此外,当我将导航栏实现为每个 fragment 中的单独组件时,项目选择的动画不再起作用。

我尝试使用<include layout="@layout/main_activity android:visibility="GONE" android:layout_width="match_parent" android:layout_height="wrap_content"/>从登录 fragment 中但这并没有起作用。

如果人们在此事上提供任何帮助,我将不胜感激。

如果您想查看我的任何代码,请随时告诉我。我不太确定我的代码的哪些部分是相关的。

最佳答案

我建议您针对这种情况使用单独的 Activity - LoginActivityMainActivity。因为您可能会在某个时候添加 ForgotPasswordFragment 以及其他内容。恕我直言,隐藏你不需要的东西是不好的做法。

如果您不想改变方法,您可以创建 BaseFragment,它将具有 abstract val showBottomNavBar() 并将覆盖它存在于每一个 fragment 中。然后在 onViewCreated 中,您将检查该标志并相应地更新 UI。

类似这样的事情:

abstract class BaseFragment : Fragment() {
abstract val showBottomNavBar: Boolean
//.. your other stuff
}

class FragmentA : BaseFragment() {
override val showBottomNavBar = false

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (!showBottomNavBar) {
(requireActivity() as YourAcitivy).hideNavBar() //this is bad
someKindOfBroadcastManager.sendEvent(hideNavBar) // this is somewhat better
}
}
}

但我仍然建议您将登录/主逻辑与单个 Activity 解耦

关于java - Android:有没有办法隐藏 fragment 中的MainActivity布局元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60097919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com