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

标签 android android-fragments android-viewpager

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

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

        } else {
            isVisible = false;

        }

    }

但是上述方法的问题是给我 getActivity() null 在第一 Fragment 。此方法在第二和第三个中效果很好Fragment 。 我尝试使用 setUserVisibleHint()但这每次都会返回 true。 对于上述问题,有什么万无一失的解决方案呢?我想要一种方法可以告诉我 Fragment 是否与 getActivity()!=null 对用户可见或不可见 .

提前致谢。

最佳答案

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

在这种情况下,不要只检查 true 或 false,只需使用一些 Id 检查 true (确保其空指针检查,例如,如果您从第二个位置移动到第三个位置,那么我们通过 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/

相关文章:

java - 共享 viewpager 制作的 slider 中的特定图像

android - 在android中可能有多个单选按钮选择吗?

android - 一起使用 firestore 和 firebase auth/core 时出现问题

android-fragments - Google 在 AVD 上使用 4.3 SDK 18 映射 v2 灰屏

java - 如何在android中的图像上放置黑色透明

android - 带拖放禁用的 viewpager

java - 大小为 1 的 CursorIndexOutOfBoundsException : Index -1 requested,

android - 从 URL 启动应用程序

Android PreferenceFragment 实现 OnPreferenceClickListener 从不调用点击

android - AsyncTask 在 ViewPager 的每个页面上运行