gpt4 book ai didi

android - 如何确保当前 fragment 在 ViewPager 中可见

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:28 25 4
gpt4 key购买 nike

我在 ViewPager 中有 3 个 Fragments。我只想在 Fragment 对用户可见 时执行网络调用。目前我正在使用以下方法:

@Override
public void setMenuVisibility(boolean menuVisible) {
super.setMenuVisibility(menuVisible);
if (menuVisible) {
isVisible = true;

} else {
isVisible = false;

}

}

但上述方法的问题是在第一个 Fragment 中给了我 getActivity() null。此方法在第二个和第三个 Fragment 中运行良好。我尝试使用 setUserVisibleHint() 但每次都返回 true。上述问题的防弹解决方案是什么?我想要一种方法,它可以告诉我 Fragment 是否对用户可见以及 getActivity()!=null

提前致谢。

最佳答案

在尝试 setUserVisibleHint() 时,当您对所有 3 个 fragment 使用相同的类时,您将根据调用 setUserVisibleHint() 的位置被调用 3 次或 2 次,但在那一次它将是真实的,其余时间将为 false,因为目前,一个 Fragment 将可见。

在那种情况下,不是只检查真或假,而是用一些 Id 检查真(确保它的空指针检查,例如,如果你从第二个位置移动到第三个,那么我们通过 setArguments 发送的第一个位置参数将为空)。

例子:我有一个 Fragment 类在我的 ViewPager 中使用 3 个 Fragment,当用户关注 Fragment 时,我想为一些 View 设置动画。

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);

if (isVisibleToUser) {
startAnimation(); // If I comment this line my View will be hidden always because I am hiding the View when it's not focused on the user
} else {
checkAndHide();
}
}

public void startAnimation() {
// View might not created, when calling this, because setUserVisibleHint get call before onCreateView()
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (mView != null) {

}
}
}, 500);
}

关于android - 如何确保当前 fragment 在 ViewPager 中可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45726099/

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