问题:ViewPager中的片段onResume()在片段变得实际可见之前被激发.

例如,我有两个片段,分别是ViewPagerFragmentPagerAdapter.第二个片段仅对授权用户可用,我需要在片段可见时请求用户登录(使用alert 对话框).

但是,ViewPager在第一个片段可见时创建第二个片段,以便缓存第二个片段,并在用户开始刷卡时使其可见.

因此,onResume()事件在第二个片段中激发,远远早于其可见.这就是为什么我试图找到一个事件,当第二个片段在适当的时刻显示一个对话框时触发.

如何做到这一点?

推荐答案

如何确定片段在ViewPager中何时可见

您可以通过在Fragment中覆盖setUserVisibleHint来执行以下操作:

public class MyFragment extends Fragment {
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
        }
        else {
        }
    }
}

Android相关问答推荐

为什么ScrollView会检测到多个直系子女?

Jetpack编写日期 Select 器

如何完全隐藏的元素堆叠在CardView?

如何在Jetpack composeH中创建具有弯曲末端的六边形形状

Kotlin DSL:为什么我可以从Play Store获取发布版本的日志(log)?

无法在Android Gradle中同步Chaquopy版本

添加可组合元素的列表?

将DiffUtils用于Android上的Recrecerview适配器

无法加载类';com.android.build.api.extension.AndroidComponentsExtension';

如何在Jetpack Compose中创建这个圆形?

android crashlytics 显示崩溃但不显示我的课程中的位置

参数化类RecyclerView.Adapter的原始使用

我怎样才能在多行 TextView 旁边有一个 ImageView 并且不超过父级的限制?

在 Jetpack Compose 中对齐行项目

AttributionSource 需要 android.permission.BLUETOOTH_SCAN 权限的问题

导航组件中预期的函数调用map(...)

Jetpack Compose 中的滑动按钮菜单

我不能在 jetpack Compose 中使用 TextField()(material 3)

android 13 版本是否会影响 android 12 目标应用程序

Jetpack Compose:对角拆分卡片并将内容放入其中