Android 片段隐藏显示 OnHide/OnShow?

Posted

技术标签:

【中文标题】Android 片段隐藏显示 OnHide/OnShow?【英文标题】:Android fragments hide show OnHide/OnShow? 【发布时间】:2011-10-27 11:24:00 【问题描述】:

我问这个是因为我有点好奇。

1 ) 如果片段已经在 xml 中创建,大多数谷歌演示会通过其 ID 找到片段。

因此,如果我们采用这种方法,我们显示片段的方式是隐藏它并显示它,因为片段已经创建。

2) google 还提供了一些示例,您可以在其中使用构造函数创建片段并对其进行膨胀。如果在该片段中调用 getActivity() ,这就像 getActivity() 返回 null 一样奇怪。

所以如果我采用第一种方法,我必须隐藏和显示片段。 那么为什么谷歌不提供像 onHide 或 onShow 这样的片段的钩子呢? 这样我们就可以正确处理事情,而不是使用我们实现和显式调用的函数进行清理。

【问题讨论】:

这篇文章有一些相关的答案:***.com/questions/10024739/… 【参考方案1】:

如果你想在onHide/onShow 上挂钩操作,只需覆盖

public void onHiddenChanged(boolean hidden) 

在你的片段中。

【讨论】:

【参考方案2】:

通过覆盖 setUserVisibleHint,您可以轻松跟踪它。

  @Override
public void setUserVisibleHint(boolean isVisibleToUser) 
    super.setUserVisibleHint(isVisibleToUser);
    if(isVisibleToUser)
      //When fragment is visible
    
    Log.i("my_fragment","setUserVisibleHint: "+isVisibleToUser);

【讨论】:

【参考方案3】:

我重写了下面的函数来确定片段是显示还是隐藏。

@覆盖 public void setMenuVisibility(最终布尔可见)

【讨论】:

以上是关于Android 片段隐藏显示 OnHide/OnShow?的主要内容,如果未能解决你的问题,请参考以下文章

在片段替换上显示/隐藏 Android 软键盘

片段隐藏在Android中不起作用

如何在 Android 中显示和隐藏菜单项?

在Android Studio片段之间切换时地图片段不隐藏

隐藏子屏幕/片段的android底部导航视图

片段设计:通过在单个 Activity 中显示/隐藏片段来适应多种屏幕布局?