android Fragment中遇到的问题

安卓的fragment跳转问题 最近在做安卓项目,然后就遇到了fragment的问题。 之前做项目的代码拿出来看,发现和这一次的做法不太一样,但在编码过程中就出现了一些跳转的问题。 之前实现fragment是利用FragmentActivity和PageView实现的,这一次就直接继承Fragment,其实思路还是一样的。 实现fragment的方法很多,下面是我这次项目采用的方法: 首先在一个Activity中添加几个 阅读详情

1、在fragment中使用控件,遇到空指针(对fragment生命周期的理解)

在fragment中使用listview,textview等通过findviewbyid遇到空指针。
这里写图片描述

错误log

这里写图片描述

错误原因:
我们在onCreateView()中填充了布局,但在onCreate()中找不到指定的id
网上的好多办法是

 listView= (ListView)view.findViewById(R.id.list);

改成

  listView= (ListView)this.getActivity().findViewById(R.id.list);

其实这都是一样的
无论通过view,还是通过getActivity都会报空指针。
解决办法
把onCreate()中的初始化控件写到onStart()中,因为在onCreate()执行的时候 onCreateView还没有执行,因此报空指针。
这里写图片描述

2、在fragment在启动service

得到当前的activity,通过activity启动service

Intent intent_service = new Intent(getActivity(), XmppService.class);
        getActivity().startService(intent_service);

3、Fragment重叠问题

通过搜集相关资料,我找到了原因,在我切换到其他app的时候,fragment所在activity已经被销毁。并且通过这个方法保存了相关的数据。

当再次回到这个app的时候,通过onCreate中的参数savedInstanceState恢复了之前的fragment。此时的FragmentTransaction中的相当于又再次add了fragment进去的,之前保存的fragment也还在。hide()和show()方法对之前保存的fragment已经失效了。所以出现了重叠的现象。
解决方法如下,在进入onCreate函数时,先去判断savedInstanceState是否为null,如果不为null,则表示里面有保存这四个fragment。则不再重新去add这四个fragment,而是通过Tag从前保存的数据中直接去读取。
解决办法:
方法1:在fragmentActivity里oncreate方法判断savedInstanceState==null才生成新Fragment,否则不做处理。

方法2:在fragmentActivity里重写onSaveInstanceState方法,但不做实现,也就是将super.onSaveInstanceState(outState)注释掉。

  @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
      //  super.onSaveInstanceState(outState, outPersistentState);
    }

4、fragment长驻后台getActivity空指针问题

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference

很多人都曾被这个问题所困扰,如果app长时间在后台运行,再次进入app的时候可能会出现crash,而且fragment会有重叠现象。如果系统内存不足、切换横竖屏、app长时间在后台运行,Activity都可能会被系统回收然后重建,但Fragment并不会随着Activity的回收而被回收,创建的所有Fragment会被保存到Bundle里面,从而导致Fragment丢失对应的Activity。

解决办法:在Fragment附属的Activity中重写onSaveInstanceState方法,把super.onSaveInstanceState(outState)注释掉,这样当Activity销毁时,不会把Fragment的相关信息保存下来,就解决了空指针问题!

   @Override
    protected void onSaveInstanceState(Bundle outState) {
       // super.onSaveInstanceState(outState);
    }
Android Fragment 嵌套 destroy问题及解决 1.问题描述 今天碰到个fragment嵌套问题,如下图所示, Step 1 : 点击button后,fragment 2会replace fragment 1,至于具体方法这里就不介绍了,网上多的是。 这个特别的地方在于,fragment2内部又嵌套了fragment3和fragment4. 当第一次点击Button,Fragment2替换fragment1时,一切都没问题; 阅读详情

相关推荐

Android Studio使用Fragment遇到的问题

1.遇到问题一定要查看Logcat。 即使你不知道怎么解决,但是为你上网搜索问题的解决方法提供了一个明确的方向。 Logcat在这里: 出现问题的地方会标出显眼的颜色,最重要的就是第一行的报错。 2.java.lang.NullPointerException中fragmentManager.beginTransaction() on a null object reference 的问题。 解决方法:在每一个fragmentManager.beginTransaction()前都加上fragmentMa

qq_44886338的博客 2936

自学Android开发 Fragment的onActivityCreated()被弃用

一、Fragment的生命周期 1、官方生命周期图 二、onActivityCreated()的弃用 1、官方更新文档 版本 1.3.0-alpha02 2020 年 3 月 18 日 发布了androidx.fragment:fragment:1.3.0-alpha02、androidx.fragment:fragment-ktx:1.3.0-alpha02和androidx.fragment:fragment-testing:1.3.0-alpha02。。 新功能 添加....

一个从事Android开发的平凡工程师 2万+

【3D计算机视觉】从PointNet到PointNet++理论及pytorch代码

从PointNet到PointNet++理论及代码详解1. 点云是什么1.1 三维数据的表现形式1.2 为什么使用点云1.3 点云上以往的相关工作2. PointNet2.1 基于点云的置换不变性2.1.1 由对称函数到PointNet(vanilla)2.1.2 理论证明2.2 基于点云的旋转不变性2.3 网络总体结构2.4 实验结果和网络的鲁棒性2.5 代码解析3. PointNet++3.1...

小执着的博客 8万+

Fragment全解析系列:那些年踩过的坑以及解决方案

1、Fragment全解析系列(一):那些年踩过的坑 本篇主要介绍一些最常见的Fragment的坑以及官方Fragment库的那些自身的BUG,并给出解决方案;这些BUG在你深度使用时会遇到,比如Fragment嵌套时或者单Activity+多Fragment架构时遇到的坑。 简陋的目录1、getActivity()空指针2、异常:Can not perform this action after

lyldding-HFFW的博客 4823

国民技术N32G45X SysTick定时器实战:从1us到100ms的精准延迟实现(附完整代码)

本文详细解析了国民技术N32G45X芯片中SysTick定时器的工作原理,并提供了从1微秒到100毫秒的高精度延迟实现方案。通过对比官方库函数的局限性,文章重点介绍了无中断查询模式、时钟源选择策略以及完整的代码实现,帮助嵌入式开发者精准控制时序,适用于LED控制、软件模拟通信协议等多种实战场景。

weixin_29190573的博客 373

(ICLR 2025)【源码讲解+复现】TIMER-XL: Long-Context Transformers for Unified Time Series Forecasting

本文提出了一种统一的多变量时序预测模型Timer-XL,其核心创新包括:1)采用自回归解码器架构,将多变量时序预测统一为next-token预测问题;2)设计TimeAttention机制,通过相对位置编码和因果掩码捕获时序位置和变量间交互;3)支持长上下文预训练以提升零样本迁移能力。模型架构包含嵌入层、时间感知注意力块和预测头,采用MSE损失进行端到端训练。实验表明该方法在多种时序任务上表现优异,特别是在长跨度预测和少样本场景下。代码实现提供了完整的模型定义、数据加载和训练流程,支持自定义配置参数。

1145

android在Fragment中启动服务

1.startService(new Intent(getActivity(),mService.class));2.getActivity().startService(new Intent(getActivity(),mService.class));3.Intent mIntent = new Intent(getActivity(), BLeService.class); getAc

peng的专栏 7500

【数据集】1970-2023年全球温室气体排放 GHG 数据集 EDGAR

1970-2023年全球温室气体排放 GHG 数据集 EDGAR

WW、forever的博客 1172

java.lang.Object android.content.Context.getSystemService(java.lang.String)‘ on a null object

出现原因:在fragment中动态添加一个layout 例如: View notDataView = getLayoutInflater().inflate(R.layout.empty_view, recyclerView, false); 解决方案: 更换为: View notDataView = LayoutInflater.from(getActivity()).inflate(R.layout.empty_view, recyclerView, false); 总结:在activi

记录工作日常 2293

【38】OpenCV C++实战篇——基于多项式插值的亚像素边缘定位算法

亚像素边缘定位算法实现 本文介绍了一种基于多项式插值的亚像素边缘定位算法,用于提高图像边缘检测的精度。文章首先分析了传统像素级边缘检测方法(如Canny、Sobel)的局限性,指出其在测量应用中的精度不足问题。 算法核心 梯度计算:使用8个方向模板进行卷积运算生成梯度图像 亚像素定位:采用多项式插值方法改进边缘定位精度 实现步骤: 生成8个方向的卷积模板(0°、45°、90°等) 利用filter2D函数计算各方向梯度 通过归一化处理显示梯度图像 代码特点 提供完整的C++实现代码 包含模板生成、梯度计算和

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1099

2023年12月青少年C/C++软件编程(三级)等级考试试卷及答案解析

有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。第一行一个数字n,n不超过100,表示有n*n的宿舍房间。接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。输出为一行,表达式的值。任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。

长春高老师编程 1510

项目销毁主页Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService异常

项目需求,项目退出登录的时候,跳转登录页面,重新登录,会重新进入首页。很简单的需求,只需在退出的时候将存储的用户信息销毁,把之前活跃的activity销毁,重新跳转进入登录界面即可。但是在真正执行退出登录的时候,却出现了问题:退出登录销毁主页的时候,因为主页里面嵌套fragment,fragment中执行这自定义控件,导致在销毁的时候,出现 java.lang.NullPointerExc...

Evan_Jhon的博客 1万+

数字电路逻辑与设计实验一 门电路逻辑功能及测试

(1)选二输入四异或门电路 74LS86,按图 1-8 接线,输入端 1、2、4、5 接逻辑开 关(S1~S4),输出端 A、B、Y 接电平显示发光二极管.用六反相器(非门)按图 1-11 接线,输入 80KHz 连续脉冲,用双踪示波器测输入, 输出相位差,计算每个门的平均传输延迟时间的 tpd 值。测试不同的输入组合:对门电路进行全面的测试,尝试不同的输入组合,包括各种可能的逻辑状态。检查门电路的输入:确认门电路的输入是否正确,并且输入信号的电平符合门电路的规格要求。确保输入信号的稳定性和准确性。

欢迎交流学习心得 2万+

Android onRequestPermissionsResult在Fragment中不执行的问题

首先贴一下代码(主要代码): public class FriendFragment extends BaseFragment ...... //申请权限 if (permissions.length > 0) { ActivityCompat.requestPermissions(getActivity(), permissions, Constant.REQ_SC...

鹏鹏的博客 6387

【PX4学习笔记】1. ROS及PX4环境搭建

环境 Ubuntu18.04 安装教程参考 https://www.guyuehome.com/8983 安装过程中问题的解决 问题1 rosdep init 错误的终极解决方法 注意etc/下的ros和rostep文件夹要自己建 问题2 Ubuntu安装ROS报错 sudo: rosdep:找不到命令 问题3(更好地解决了问题1、2)【推荐】 解决GitHub的raw.githubusercontent.com无法连接问题 问题4:GeographicLib的安装 教程中安装GeographicLib d

【人工智障 | 计算鸡视觉 | 机器孩】 8230

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

关于Android Fragment的重叠问题

原因 看到网上诸多的解决方式,也解释了其起因,是由于Activity在onSaveInstanceState的时候保存了fragment的状态,而activity重建的时候恢复了保存起来的fragment,在执行oncreat的时候往往又重新添加了一遍,网上给了很多种解决方式,个人在项目中使用了好像没太看到很多人使用的方式 处理 在Activity的onAttachFragment(Fragmen...

luao419的专栏 169

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android中fragment的4个小问题

1. 清空fragment回退栈 int count = getActivity().getSupportFragmentManager().getBackStackEntryCount();   BackStackEntry backStack = getActivity().getSupportManager().getBackStackEntryAt(i);   getActivi

crazyyangdan_的博客 1777

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android fragment 嵌套,Android中Fragment的嵌套问题

答:hackbod(最佳答案)这种异常是嵌套片段(nested fragment)与系统版本不相容导致的,而嵌套片段通常支持Android4.2。一个fragment的UI中嵌套另一个fragment,极有可能会造成程序运作异常。注:嵌套片段只能在动态添加的操作中完成,也就是说,当layout中已经包含了一个,就不能将再将这个layout嵌入到fragment中。答:furykid你可以用dest...

weixin_42682925的博客 1041

安卓 fragment内显示网站_Android Fragment 被回收后显示空白问题解决方案

code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群作者:不会飞的小猪链接:https://www.jianshu.com/p/4ce35bc086aa声明:本文已获不会飞的小猪授权发表,转发等请联系原作者授权一、问题描述经常会碰到如下这样的页面架构:imageTabLayout+ViewPager+FragmentStatePagerAdapter+Frag...

weixin_39549936的博客 275

android fragment 嵌套,Android中fragment嵌套fragment问题解决方法

都说fragment好用,duang~~,又遇到问题了,记录一下,分享给遇到这个问题的同学!1.fragment嵌套fragment时出现getActivity()为nullactivity A嵌套fragment B,B嵌套fragment C,C跳转到activity D,当activity D被finish掉之后,C中容易爆出getActivity为空.如果你的activity被回收了,那你...

weixin_28673669的博客 1166

Android fragment造成的路径问题

今天用了一下fragment,造成了路径找不到的问题,把这个问题记录xial

jinrall的专栏 963

记录Android fragment的问题

记录Android fragment的问题 需求是文档里从文件管理器里选一个音频然后上传到后端去 结果一直onActivityResult函数报错找不到getactivity 教训就是 千万不要在activity里重写onActivityResult函数!!! 千万不要在activity里重写onActivityResult函数!!! 千万不要在activity里重写onActivityResul...

xxy41092的博客 337

android 多个fragment切换,Android Fragment 切换多个界面 重叠问题 隐藏问题

接上一篇的博文:Android fragment 切换加载数据卡顿问题,想到的办法就是把切换之前的fragmenthide隐藏起来,就可以解决卡顿的问题,不用重新new一个fragment。由于左侧悬浮菜单有差不多10多个菜单,如果每一个菜单切换的时候,都要隐藏其余所有的菜单,那就会导致代码十分的臃肿,以前隐藏的代码是这样的:/*if (!openPositionFragment.isAdded(...

weixin_35713824的博客 1088

android fragment嵌套多个fragment 错乱,Android Fragment多层嵌套重影问题的解决方法

1解决bug的思想://step1:当bug被发现(排除极低偶然性,单次性,开发工具导致)//step2:根据经验判断bug的重现场景,多次测试,直到精准的定位bug//step3:根据重现场景找到对应的代码//step4:分析区域代码是否会影响到其他功能.//step5:做好数据的备份工作.(做好代码重构和恢复的准备,这样你才能肆无忌惮的捣鼓代码)//step6:修复代码的过程中,你会发现可能有...

weixin_31451231的博客 1025

Android Fragment内嵌Fragment页面不刷新数据问题

解决Fragment内嵌Fragment页面数据无法刷新的问题 在父Fragment中重写 @Override public void onDestroyView() { super.onDestroyView(); try { Field childFragmentManager = Fragment.class .getDeclaredField(

Litchi的专栏 4338

Android 关于Fragment嵌套Fragment的问题

在项目中Activity A中嵌套Fragment B,Fragment B中再嵌套Fragment C,如图:   问题1:在点击Activity A中主菜单1进行切换时,报错Fragment C already added。 解决:在Framgent B中添加Fragment C 调用add()时先判断fragmentC.isAdded() FragmentManage

java后台, 安卓App, 微信小程序都会, 有需要的可以联系! 3760
上一篇: PHP基础(PHP的数据类型)
下一篇: Fragment实现左右新闻列表和详情
android_xiaogang
博客等级 码龄12年 89粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值