当前位置: 首页 > 知识库问答 >
问题:

setUserVisibleHint方法在onCreateView方法之前调用,并且在第一次加载时不工作

罗星洲
2023-03-14

我正在使用这种方法,但它不适用于第一个片段,但在从第二个片段滑动到第一个片段时,它工作良好。请帮我做这件事。谢谢

 @Override
     public void setUserVisibleHint(boolean isVisibleToUser) 
   {
        super.setUserVisibleHint(isVisibleToUser);
        if(isVisibleToUser){   //do Something 
       }
     }

共有3个答案

寿毅庵
2023-03-14

当我在viewPager Fragments上加载数据时,当它们可见时,我遇到了这个问题。为了仅在特定片段可见时加载数据,我依赖于setUserVisibleHint(isVisibleToUser: Boolean),而没有意识到在片段生命周期的哪个点调用它。

结果,我一天两天都不知道,为什么我所有的变量(出现在onCreateView()中)都是空的。只是在看了一些堆积如山的答案后,我才意识到我犯了一个错误。

setUserVisibleHint()甚至在调用onCreateView()之前就被调用了。

所以周围的工作是这样的。在这里看到投票最高的答案。这家伙用布尔人做到了。希望它能帮助所有未来的游客,节省他们的时间。

曹昊焱
2023-03-14

当使用支持版本时,您真的不应该依赖调用setUserVisibleHint的顺序。从文档:

注意:此方法可以在片段生命周期之外调用。因此对于片段生命周期方法调用没有排序保证。

类似的问题也有一些解决方法。

冯星阑
2023-03-14

这就是它的工作原理

View view;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        //inflate view layout
        view =inflater.inflate(R.layout.your_fragment, container, false);

        // return view
        return view;
    }

用这个

@Override
        public void setUserVisibleHint(boolean isUserVisible)
        {
            super.setUserVisibleHint(isUserVisible);
           // when fragment visible to user and view is not null then enter here.
                if (isUserVisible && view != null)
                {
                   onResume();
                }

        }

在简历里放上这段代码

@Override
         public void onResume() { 
         super.onResume();   
            if (!getUserVisibleHint()) {
            return;
          }
      //do your stuff here
   }
 类似资料:
  • 我是胡克斯的新手,遇到了一些让我追自己尾巴的案例。 希望有人能解释或提供对我有意义的解决方案: > 下面这个线程:如何调用加载函数与反应使用效果只有一次 我试着在没有依赖性的情况下使用useEffect,eslint不喜欢这样,他们建议添加一个“跳过下一行”,这似乎有点骇人:

  • 在我的应用程序中,我有一个ViewPager,里面有很多可滑动的标签,里面有碎片。我使用方法检测何时出现在屏幕上。当用户在选项卡之间滑动时,这非常有效,但它在第一次加载时不起作用。要运行该方法中的代码,我必须向左滑动,然后返回到第一个,因为方法是在方法之前调用的。 你有任何想法,我如何运行这段代码后,第一个片段是可见的吗?中有方法吗?

  • 我在运行时编译了一个java文件的文件系统,这是一个非常简单的类: } 现在我只想从我的项目中调用res方法(这将是一个jar),但我的代码生成 这就是我加载类的方式:

  • 我正在Java的Android应用程序中工作,其中调用类并在OnCreateView方法中进行测量。然而,一旦完成,我必须自动发送他的测量结果。但我不能。是否有继承自:java.lang.对象android.app.片段的方法,可以在OncreateView进程之后执行函数。因为目前数据已经发送,但还没有时间填充。 谢谢你的帮助

  • 问题内容: 我想我在这里描述的可能有个名字,但我不知道。所以我的第一个问题是要知道这种技术的名称。 这是一个示例:假设您正在网页上实现实时搜索。每次用户在搜索框中键入内容时,您都会触发一个新的搜索查询,并且结果会尽可能频繁地更新。这是一件愚蠢的事情,因为您发送的查询会超出实际需要。每2-3个字母发送一次请求,或者每100 ms最多发送一次请求就足够了。 因此,一种技术是安排在键入键之后立即执行的查