FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时,给textview赋值时出现的空指针异常

public class BaseFragment extends Fragment {/*布局*/private View view;/**/boolean isVisible = false;@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {view = setRootView(inflater,container);Log.i("包名:"+getClass().getName(),"onCreateView");return view;}protected View setRootView(LayoutInflater inflater, @Nullable ViewGroup container){return null;}protected void initWidght(){};protected void initData(){};/*** 解决预加载* */@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) {super.setUserVisibleHint(isVisibleToUser);Log.i("包名:"+getClass().getName()," setUserVisibleHint  显示"+getUserVisibleHint());if (getUserVisibleHint()){onVisible();isVisible = true;}else {
//            onInvisible();
        }}/***  预加载--显示-加载数据* */private void onVisible() {if (!isVisible){initWidght();}}/*** 预加载--不显示时* */private void onInvisible() {isVisible = false;}protected <T extends View>T getView(int resourcesId){return (T) view.findViewById(resourcesId);}/*** Toast提示;* @param content 提示内容;*/protected void showToast(String content) {Toast.makeText(getActivity(), content, Toast.LENGTH_SHORT).show();}
}

public class IndexChatFragment extends BaseFragment {TextView mTextView;@Overrideprotected View setRootView(LayoutInflater inflater, @Nullable ViewGroup container) {return inflater.inflate(R.layout.fragment_index_chat,container,false);}@Overrideprotected void initWidght() {mTextView = getView(R.id.ceshi);mTextView.setText("赋值测试");}

出现了这个错误

测试发现具体问题是:只有加载的第一个Fragment会出现这种状况,后边则可以正常显示

最后打印了生命周期才发现是这样的,setUserVisibleHint是比oncreateView先加载,所以第一个调用setUserVisibleHint时是空

onCreateView和setUserVisibleHint都调用onvisible(),两个条件同事满足则加载布局或者数据

view也可以单独换成一个标记,在oncreateView里赋值true

转载于:https://www.cnblogs.com/Jieth/p/5855757.html

FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时遇到的坑,给textview赋值时出现的空指针异常...相关推荐

  1. 我的世界服务器如何修改加载规模,我的世界服务器预加载区域怎么调小

    满意答案 首先我们先停止服务器 为了服务器的健康着想,我们先关掉服务器,即输入[stop]命令后敲回车,我想大家都会哈! 我的世界服务器怎么调整困难度 找到[server.properties]文件, ...

  2. 关于图片加载的问题-如加载失败显示占位图,预加载,懒加载

    一.图片加载失败时,如图所示 <img v-if="src" :src="src" :onerror="errorImg">le ...

  3. android listview预加载动画,Android开发Activity页面预加载

    概述 某些业务场景下,为了提高用户体验,我们可能需要在前一个页面就将下一个页面的数据准备好,减少用户后续操作的时间.因为Activity在设计上采用了低耦合,高度的隔离使得传统的预加载Activity ...

  4. html页面预加载图片不出来,页面图片预加载与懒加载策略

    在图片的加载策略之前,我们先来了解下html网页中,图片的不同位置的图片分别是在什么时候发起图片资源请求的 img 标签 img标签会在html渲染解析到的时候,如果解析到img src值,则浏览器会 ...

  5. 好看的html登录遮罩提示加载中,jQuery炫酷页面预加载Loading特效插件

    fakeLoader.js是一款轻量级的 jQuery 炫酷页面预加载Loading特效插件.它能帮助我们创建一个全屏遮罩效果的旋转loading效果来模拟页面预加载过程. Bower安装 bower ...

  6. android Viewpager取消预加载及Fragment方法的学习

    1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载.通过设置setOffscreenPageLimit(int numbe ...

  7. android 移除fragment,Android Viewpager+Fragment取消预加载及Fragment方法的学习

    1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载.通过设置setOffscreenPageLimit(int numbe ...

  8. android预加载布局,Android 懒加载优化

    目录介绍 1.什么是懒加载 1.1 什么是预加载 1.2 懒加载介绍 1.3 懒加载概括 2.实际应用中有哪些懒加载案例 2.1 ViewPager+Fragment组合 2.2 分析源码 3.Vie ...

  9. Angular路由--模块预加载

    2019独角兽企业重金招聘Python工程师标准>>> 预加载是介于直接加载.惰加载的一种方式. 预加载的工作原理 在每次成功的导航后,路由器会在自己的配置中查找尚未加载并且可以预加 ...

最新文章

  1. 胳膊上无缘无故起了个大包
  2. c语言算法6,c语言6函数和算法.ppt
  3. emqx配置mysql认证_emqx使用mysql完成用户密码验证和ACL鉴权-Go语言中文社区
  4. Ubuntu系统的安装
  5. linux格式化该新添加的分区,Linux下添加新硬盘及分区格式化要点
  6. 200725学习日报循环语句和数组
  7. WPF 记一个Popup踩坑记录
  8. (7)FPGA十大设计思想(第2天)
  9. JAVA-5NIO之Selector
  10. 使用httpwatch抓包
  11. SCUT - 48 - 飞行员的配对方案 - 费用流
  12. iPhone 的续航有望加长!749 元的“磁吸充电宝”你会买吗?
  13. 安装完 SQL Server 2008 后没有 SQL Server Management Studio
  14. android swf游戏下载工具,swf游戏模拟器高级版下载
  15. 40.用创业思维复盘:写技术博客到出书
  16. MatConvNet的excise 3改为网络配置文件形式
  17. 修改阿里云CentOS的远程登录默认22端口
  18. Excel技巧—名称框的妙用
  19. MySQL-HA高可用
  20. 从无栈协程到C++异步框架

热门文章

  1. Linux登录的shell信息,Linux展示登录Shell信息
  2. python 优先队列_示例讲解:python队列原理及实现方法与操作思路
  3. hrjava项目原型html_产品入门|什么是原型图设计?
  4. python能做机器人吗_最火的Python语言也能做机器人仿真,你会不?
  5. centeros php,CenterOs7 安装oracle19c的方法详解
  6. 如果计算机原理程序设计,计算机组成原理程序设计.doc
  7. python虚拟环境搭建mac_在MAC上安装Python虚拟环境
  8. mysql更新多条数据_mysql 一次更新多行(多条记录)
  9. data的值 如何初始化vue_【Vue 原理】Vue 是如何代理 data、methods 和 props 的?
  10. 递归的应用之字符串反转