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

带有android片段的setUserVisibleHint

谢泽语
2023-03-14

现在,我想使用Parse添加服务器拉请求,将列表中的数据添加到适配器,并在用户查看页面后填充recyclerview,这样

1)我是否应该添加setUserVisisbleHint中的所有代码,并只添加0.5秒延迟,以便在调用setContentView后执行它,以确保不出现空指针异常错误或

2)是否有更好的方法/其他功能可以实现相同的功能?

public class NewsFeed extends Fragment {
        LinearLayoutManager mLayoutManager;
        boolean _areLecturesLoaded=false;
        View v;
        ProgressBar bar;

        public NewsFeed() {
            // Required empty public constructor
        }

        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                                 @Nullable Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            v=inflater.inflate(R.layout.fragment_news_feed, container, false);

            RecyclerView mRecyclerView = (RecyclerView)v.findViewById(R.id.recycler_view);
            mRecyclerView.setHasFixedSize(true);
            mLayoutManager = new LinearLayoutManager(v.getContext());
            mRecyclerView.setLayoutManager(mLayoutManager);    
            MyStickyAdapter mAdapter = new MyStickyAdapter(v.getContext());    
            mRecyclerView.setAdapter(mAdapter);
           // mRecyclerView.addItemDecoration(new StickyRecyclerHeadersDecoration(mAdapter));
            return v;
        }

        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser && !_areLecturesLoaded ) {
                _areLecturesLoaded = true;
                v.findViewById(R.id.asd).setVisibility(View.GONE);
            }
        }


    }//Closes Fragment

共有1个答案

巫马浩言
2023-03-14

我强烈建议避免增加延迟,特别是在主线程上运行时。若要避免NPE,请尝试在膨胀视图后将findViewById(r.id.asd)移动到onCreateView方法中:

@Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        v=inflater.inflate(R.layout.fragment_news_feed, container, false);
        v.findViewById(R.id.asd).setVisibility(View.GONE);

这是假设r.id.asd位于r.layout.fragment_news_feed中

这篇文章还可以提供一些见解:在片段中的onCreateView之前调用setUserVisibleHint

 类似资料:
  • 问题内容: 我有一个带有gridview的适配器,可以用作活动。我正在尝试将其放在Fragment中并进行转换,但是它不起作用。当我在Activity中包含IconFragmentSystem时,当我尝试打开Activity时会强制关闭。 我知道活动有效,因为我可以使用其他片段,并且一切都很好,所以我知道我的问题出在此文件中。 我尝试了不同的方法来实现此目的,但都失败了,我真的可以使用帮助将我指向

  • 我试图在一个片段下创建一个带有Intent的setOnClickListener,但当我试图用以下方法实例化Intent对象时,我得到了以下错误: 错误消息:无法使用提供的参数调用下列函数。(上下文!,类<*>!)在Android.Content.Intent(String!,URI!)中定义在Android.Content.Intent中定义 Logcat错误:

  • 根据谷歌的文档: 现在可以在片段中嵌入片段。这对于各种情况都很有用,在这些情况下,您需要将动态和可重用的UI组件放置到本身是动态和可重用的UI组件中。例如,如果使用ViewPager创建左右滑动并占用大部分屏幕空间的片段,现在可以将片段插入每个片段页面。要嵌套片段,只需对要添加片段的片段调用getChildFragmentManager()。这将返回一个FragmentManager,您可以像通常

  • 在我的应用程序中,我有标签的活动(让我们说10个标签)。每个选项卡页都包含和(此ListView中显示的数据是从我的服务器动态加载的)。我使用来显示这些页面。我不想将所有保存在内存中,所以我决定使用(我的适配器类扩展了这些类)。 > 假设选择了第三个选项卡。然后,当我转到第一个选项卡时,应该从头开始为该选项卡创建(这很好,这就是的工作方式),但不恢复该片段以前的状态(例如,不应该滚动到上次访问该时

  • 但问题是espresso看起来是所有的页面,而不仅仅是当前页面,我得到以下错误: Android.support.test.espresso.ambiguousViewMatcherException:“with id:eu.airpatrol.android:id/container_weather”匹配层次结构中的多个视图...

  • 我有一个带选项卡的ActionBar/ViewPager布局,有三个选项卡,比如a、B和C。在选项卡C选项卡(片段)中,我添加了另一个片段,比如片段D。 我修改了DFragment的onResume添加按钮中的actionbar: 现在在DFragment中,当我按下hardware(phone)Back按钮时,我返回到选中CFragment的原始选项卡(ABC)布局。如何使用actionbar