Android:检查一个片段是否可见

27

我有一个FragmentActivity,一些片段和在后台运行的服务。是否可以从服务中检查特定片段是否可见?


6
这并不是完全的重复,因为另一个问题是在ViewPager的上下文中提出的,而答案反映了那个特定的上下文。这是一个更一般性的问题。 - awy
3
不是重复的。 - Jayson Tamayo
对我最有效的解决方案是https://dev59.com/7mw15IYBdhLWcg3wO5IH#6751537。 - Jose Gómez
3个回答

54

检查 if(YourFragment.this.isVisible())


1
如何在选项卡式操作栏中实现?在这个片段方案中,导航出现了问题。 - Skynet
导航出了什么问题?你想要实现什么? - mrsus
我的应用中有一个 Action Bar 的选项卡活动(Activity),选项卡由 Fragment 组成。我在 Action Bar 上放了一个按钮,点击后可以跳转到不同的 Fragment,比如“关于应用”。当用户跳转到“关于应用”页面时,我会将该按钮禁用,以防止重复调用。但是一旦用户点击返回按钮回到之前的页面,我会重新启用该按钮。但是如果用户通过切换选项卡而不是按返回键来导航,那么我希望能够再次启用该按钮。 - Skynet
到目前为止,我尝试了许多方法,比如在选项卡片段的启动和恢复中引用菜单项,但会给我一个空指针。现在我正在撰写详细的脚本并发布为问题。 - Skynet
是的,很好,你必须发布带有尝试代码的问题。 - mrsus
https://dev59.com/2HnZa4cB1Zd3GeqPv-Vc - Skynet

21
public boolean isFragmentUIActive() {
    return isAdded() && !isDetached() && !isRemoving();
}

有用的。


如果我从服务中调用它,它会返回false,但也许是我做错了什么。 - user2538848

5

请查看下面的代码:

public class MyFragment extends Fragment
            @Override
            public void setMenuVisibility(final boolean visible) {
                super.setMenuVisibility(visible);
                if (visible) {
                    ...
                }
            }

这是来自此主题。或者您也可以参考此链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接