Android应用开发—重载fragment构造函数导致的lint errors

背景:在一次release打包中发现lint报以下错误:
Error: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]
根据后面的log提示是由于重载了fragment的构造函数,虽然紧接着lint提供了一个修改build script解决该问题的方法,不过这种方法对于有“追求”的程序员,是不会这么解决掉的。如何解决呢,google以下吧。

Avoid non-default constructors in fragments: use a default constructor plus Fragment报错的解决方法
以上链接文章其实已经给出了解决方法,没其他需要补充的了。

但是为什么需要这样做,上文没有提到,我只猜测下了:
文中提到这么个原因:

其原因是你重载了fragment的构造方法,但是在一些情况下,如屏幕翻转时,fragment被重新创建,就可能会造成数据丢失。

我的理解是,当fragment重建时,重载的构造方法的参数会丢失。但为什么通过newInstance就不会丢失呢?

    public static CustomCommonEditDialog newInstance(String content, int type) {CustomCommonEditDialog newFragment = new CustomCommonEditDialog();Bundle bundle = new Bundle();bundle.putString("content", content);bundle.putInt("type", type);newFragment.setArguments(bundle);return newFragment;} 

我猜测是bundle的数据是在fragment重建过程中是不会丢失的。(各位有经验的android开发者不要嘲笑我,不太了解fragment.setArguments这个接口的作用,对于一个只有三个月开发经验的android程序员,还有太多东西要了解,这个先放一放了)

补充用到的代码:

//在fragment onCreate接口中获取上面的参数
Bundle args = getArguments();
if (args != null) {content = args.getString("content");type = args.getInt("type");
}

调用:

CustomCommonEditDialog dialog = CustomCommonEditDialog.newInstance("String", 1);

附错误log(log里其实已经写的很明确了,E文很重要啊):

CustomCommonEditDialog.java:47: Error: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]public CustomCommonEditDialog(String content, int type) {~~~~~~~~~~~~~~~~~~~~~~Explanation for issues of type "ValidFragment":From the Fragment documentation:Every fragment must have an empty constructor, so it can be instantiatedwhen restoring its activity's state. It is strongly recommended thatsubclasses do not have other constructors with parameters, since theseconstructors will not be called when the fragment is re-instantiated;instead, arguments can be supplied by the caller with setArguments(Bundle)and later retrieved by the Fragment with getArguments().http://developer.android.com/reference/android/app/Fragment.html#Fragment()1 errors, 0 warningsFAILEDFAILURE: Build failed with an exception.* What went wrong:
Execution failed for task ':vassistant:lintVitalRelease'.
> Lint found fatal   while assembling a release target.To proceed, either fix the issues identified by lint, or modify your build script as follows:...android {lintOptions {checkReleaseBuilds false// Or, if you prefer, you can continue to check for errors in release builds,// but continue the build even when errors are found:abortOnError false}}...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迅雷影音怎样 1.5倍速度播放

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 看视频 觉得播放速度太慢,想让1.5速度播放可以这样设置: 点击快进按钮,点一次变为1.1倍&#xff0c…

【Java】Mybatis mapper动态代理方式

前言 我们在使用Mybatis的时候,获取需要执行的SQL语句的时候,都是通过调用xml文件来获取,例如:User user (User) sqlSession.selectOne("cn.ddnd.www.Entity.User.getUser", "xue8qq.com");。这种方式是通过…

git pull时冲突的几种解决方式

仅结合本人使用场景,方法可能不是最优的 1. 忽略本地修改,强制拉取远程到本地 主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新,本地的版本已无用,可以强拉 git fetch --allgit reset --h…

Android应用开发—eventBus发布事件和事件处理的时序关系

占坑,简单说明下eventBus发布事件和事件处理的时序关系。 什么时候使用sticky: 当你希望你的事件不被马上处理的时候,举个栗子,比如说,在一个详情页点赞之后,产生一个VoteEvent,VoteEvent并不立…

grep命令 解说

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来&#x…

创业第一桶金怎么来

文章摘要:资金是创业要具备的一个必要条件,那么对于创业者来说,第一桶金如何取得?资金是创业要具备的一个必要条件,那么对于创业者来说,第一桶金如何取得?   一、一门手艺   都说拥有万贯…

4001.基于双向链表的双向冒泡排序法

基于双向链表的双向冒泡排序法 发布时间: 2018年11月26日 10:09 时间限制: 1000ms 内存限制: 128M 习题集源码中出现了 temp->next->prior p; 本人推断这里缺少预先的对temp->nextNULL这种情况的判定,所以需加入一个判断语句解决。 此为非循环的双向链…

页面向上滚动

#页面或者div向上无缝滚动 1.css: body {margin: 0;padding: 0;overflow: hidden;}.container {position: relative;top: 0;}.container div {width: 500px;height: 500px;border: 1px solid chartreuse;font-size: 100px;line-height: 500px;font-weight: bold;color: black;t…

叨逼叨

此处记录点零散的小idea,为了避免把csdn当微博,开一篇,都记在这里吧。 感觉服务注册机制,貌似也是一种依赖注入。(虽然我还没完全搞懂依赖注入),理由呢:你需要一个模块的功能&#x…

Linux:echo命令详解

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 echo命令 用于字符串的输出 格式 echo string使用echo实现更复杂的输出格式控制 1.显示普通字符串: echo "It is a test"这里…

看年轻人如何赚第一桶金

上世纪90年代,成为百万富翁,对很多人只是个梦想。不过如今,随着经济飞速发展,拥有百万资产已经不再是神话,放眼望去,我们身边的百万富翁比比皆是,甚至很多初入社会、白手起家的年轻人&#xff0…

跨越解决方案之nginx

这里是修真院前端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/技能,本篇分享的是: 【跨越解决方案之nginx】 1.背景介绍 跨域&#x…

学习 shell脚本之前的基础知识

见 : http://www.92csz.com/study/linux/12.htm【什么是shell】 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算…

「分块系列」数列分块入门3 解题报告

数列分块入门3 题意概括 区间加法,区间求前驱。 写在前面 这题的方法与分块2方法极其类似,建议自行解决。 正题 和上一题类似,但是二分不是用来计数的,而是用来求小于c的最大值的。然后对于不完整快,将小于c的值求最大…

创业者自述:我的第一桶金是如何来的

记者采访王宏筠的当天,北京气温已达到30℃,王宏筠从他的铁灰色奥迪A6车上下来,一身挺括的西装,打着领带,肩上背着一个超大的牛皮包。后来他对记者说,穿西服是因为多年在外企养成的习惯,一年中至…

Git cherry-pick后再merge出现一个“奇怪”的现象

背景描述:有的时候基于一个master branch拉出一个独立feature分支做开发时,两条分支都在并行开发,如果master分支增加了某些功能,解决了某些关键bug,而独立feature分支不需要所有的增加的commit,只需要某一…

inux系统中如何进入退出vim编辑器

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 VIM编辑器,可以新建文件也可以修改文件,命令为:vim AAA 。AAA就是文件名。 如果这个文件&#xff…

C++ 智能指针六

/* 智能指针unique_ptr */#include <iostream> #include <string> #include <memory> #include <vector>/*unique_ptr 独占所指向的对象, 同一时刻只能有一个 unique_ptr 指向给定对象(通过禁止拷贝语义, 只有移动语义来实现), 定义于 memory (非memo…

如何掘到第一桶金

第一种类型&#xff1a;才智高远型 典型代表&#xff1a;《福布斯》中国富豪榜排名第一位、个人资产总计达到83亿元的中国希望集团刘氏兄弟。 与一般的创业者不同&#xff0c;刘氏四兄弟刘永言、刘永行、刘永美、刘永好一开始就悟透了“舍得”二字。他们本来都在国家企事业单…

Sublime Text3中文环境设置

Sublime Text3中文环境设置 1、首先打开安装好的的Sublime软件,选择Preferences下面的Package Contorol选项出现弹窗方框 2、在弹窗输入install package,选择对应&#xff08;默认第一个&#xff0c;如图这个&#xff09;命令点击进入;安装的时候&#xff0c;左下角会有进度条显…