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.pswp.cn/news/450120.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450120.shtml
英文地址,請注明出處:http://en.pswp.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;左下角會有進度條顯…