1. 程式人生 > >內部Fragment設定為public static和checkReleaseBuilds false與abortOnError false

內部Fragment設定為public static和checkReleaseBuilds false與abortOnError false



在維護一個老專案的時候,發現以前的Activity裡邊有一個內部Fragment繼承自DIalogFragment,但是這個內部Fragment沒有public和static修飾,Android Studio 智慧地發現了這個問題並給出了錯誤。雖然給出了錯誤提示,但是AndroidStudio竟然能正常的打包,檢視build.gradle發現了這句話
android {
lintOptions{
checkReleaseBuilds false
abortOnError false
}
}checkReleaseBuilds就是在打包Release版本的時候進行檢測,這裡就直接關掉了,這樣即使有報錯也不會停止打包了。這個也太簡單粗暴了。
還是按照規範設定內部fragment為public static 的吧。
這樣的話在fragment裡邊要訪問所屬activity的物件就通過getActivity然後強制型別轉換訪問,不能直接訪問了(static 訪問非static錯誤)。
注意兩點:
1、建議每個fragment都設定一個空的構造器,方便恢復狀態,有引數的構造器在恢復狀態的時候並不會呼叫。要給fragment傳遞引數,使用setArguments(Bundle)
2、非static內部類潛在會有記憶體洩露問題,因為其持有外部類的引用。static內部類不會持有外部類引用。



按照Lint的建議將內部類改成static靜態內部類後,由於不可能將當前類的所有全域性物件都宣告為static物件,所以會報“Cannot make a static reference to the non-static field”的錯誤,這時候可以使用軟引用來解決這個問題,具體程式碼如下:

public staticclassLoadDataHandlerextendsHandler{privateSoftReference<MainActivity> activitySRF =null;publicLoadDataHandler(MainActivity activity
){ activitySRF =newSoftReference<MainActivity>(activity);}

相關推薦

內部Fragment設定public staticcheckReleaseBuilds falseabortOnError false

在維護一個老專案的時候,發現以前的Activity裡邊有一個內部Fragment繼承自DIalogFragment,但是這個內部Fragment沒有public和static修飾,Android Studio 智慧地發現了這個問題並給出了錯誤。雖然給出了錯誤提示,但是An

eclipse 運行錯誤:在類XXX中找不到 main 方法, 請將 main 方法定義: public static void main(String[] args) 否則 JavaFX 應用程序類必須擴展javafx.application.Application

分享圖片 java stat 報錯 es2017 pub .... img nbsp 新建了一個類Hello: 代碼: 第一次運行報錯: 點擊關閉該類的界面時出現: 點擊是,然後再次打開,可以正確執行,結果為: 這是為什麽.... ec

錯誤: 在類 Main 中找不到 main 方法, 請將 main 方法定義: public static void main(String[] args) 否則 JavaFX 應用程序類必須擴展javafx.application.Application

導包 javafx 其他 就是 ring del args bsp pub 錯誤: 在類 Main 中找不到 main 方法, 請將 main 方法定義為: public static void main(String[] args)否則 JavaFX 應用程序類必須擴展

錯誤: 在類 com.js.sort.ArraySort 中找不到 main 方法, 請將 main 方法定義: public static void main(String[] args) 否則 JavaFX 應用程式類必須擴充套件javafx.application.Application

https://blog.csdn.net/liu1340308350/article/details/80746671 開啟: eclipse ->window->preference->run and debug->Lunching    將第一行Sav

錯誤: 在類中找不到 main 方法, 請將 main 方法定義: public static void main(String[] args) 否則

錯誤: 在類 ZiFUChuan.Pyramid 中找不到 main 方法, 請將 main 方法定義為:    public static void main(String[] args) 否則 JavaFX 應用程式類必須擴充套件javafx.application.Ap

類呼叫自己的靜態方法必須把該方法設定public

    否則調用不了 ParaChecker.isOK(bindingResult);   public class ParaChecker { static BaseResult paraCheck(BindingResu

C++中Public StaticPrivate Static區別

Static: 靜態成員的關鍵字,表示不能例項化,在你執行的時候他自己已經在記憶體中開闢了塊空間,所以不用new, 可以直接呼叫。類似全域性變數。  特點:  1、訪問static成員,用類而不是例項化的物件;  2、static方法只能訪問static屬性;&nb

類中找不到main方法請將main方法定義public static void main. 否則 JavaFX 應用程式類必須擴充套件javafx.application.Application

 最近在使用elcipise編寫java程式時遇到這樣一個問題:錯誤在類中找不到main方法,請將main方法定義為 public static void main(String[] args)否則 JavaFX 應用程式類必須擴充套件javafx.application.A

Java介面中的成員變數為什麼必須宣告public static final?

一、為什麼要用final? 首先,我們應該明白一個問題。介面,實際上比抽象類更加抽象,它是最高層次的抽象。介面中的所有方法都是抽象方法,不會有任何實現方面的程式碼,而它的具體實現是要靠實現這個介面的具體類來具體實現的。而且,這個介面中的方法是不可更改的。同樣的,介面中的

錯誤: 在類中找不到 main 方法, 請將 main 方法定義:public static void main(String[] args)否則 JavaFX 應用程式類必須擴充套件javafx.ap

最近在使用eclipse編寫java程式時遇到這樣一個問題:  錯誤在類中找不到main方法,請將main方法定義為 p

static類變數物件初始化載入時機

1.static修飾的範圍 使用範圍:在Java類中,可用static修飾屬性、方法、程式碼塊、內部類 被修飾後的成員具備以下特點: 隨著類的載入而載入 優先於物件存在 修飾的成員,被所有物件所共享 訪問許可權允許時,可不建立物件,直接被類呼叫 2.類變數(cla

Fragment null must be a public static class to be properly recreated from instance state.

Fragment null must be a public static class to be properly recreated from instance state. Android裡做一個RadioGroup實現底部導航頁面,遇到了這樣的問題: FATAL EXCEPTIO

用C程式設計,設定兩個外部中斷(INT0INT1)按鍵,優先順序IP=0x04,即把外部中斷1設定高階優先順序,外部中斷0低階優先順序,使外部中斷1巢狀在外部中斷0中。

問題 用C程式設計,設定兩個外部中斷(INT0和INT1)按鍵,優先順序IP=0x04,即把外部中斷1設定為高階優先順序,外部中斷0為低階優先順序,使外部中斷1巢狀在外部中斷0中。 要求:中斷觸發方式為下降沿觸發,按鍵有消抖功能 模擬 程式碼 #include <

C/C++網路程式設計在windowslinux中將socket設定阻塞非阻塞

C/C++網路程式設計在windows和linux中將socket設定為阻塞和非阻塞              在 socket程式設計中,對於socket的讀寫預設都是阻塞的,但有的情況我們需要將其設定為非阻塞,比如做多

Java小遊戲DanceWithStars(二):修改本地文件中的圖片(圖片寬高圖片型別)以及將圖片設定JButton的影象

1. 修改本地文件中的圖片(圖片寬高和圖片型別) 為了使下載的圖片素材都具有統一的width和height,需要對下載來的圖片重新處理並另存 主要思想是:構造一個BufferedImage物件,用ImageIO.read()讀入,再用ImageIO.write()重畫 程式碼如下: 1 pac

eNSP華模擬器交換機路由器裝置密碼設定取消

交換機設定密碼 system-view 進入系統檢視 [huawei]user-interface console 0 控制檯 [huawei-ui-console0]set authentication password cipher nihao 密碼 [huawei-ui-console

expect接收命令列傳遞的引數並設定變數列印變數的值

vim damo.expect #!/usr/bin/expect set name [lrange $argv 0 0] set age [lrange $argv 1 1] puts $name puts $age puts $argv ./damo.expect xiaoke age xia

什麽main方法是public static void?

否則 鏈接 靜態 訪問 運行命令 containe zed zju 編程 Main方法是我們學習Java編程語言時知道的第一個方法,你是否曾經想過為什麽main方法是public、static、void的。當然,很多人首先學的是C和C++,但是在Java中main方法與前者

內部類是否設定static的問題

在一個類中建立另外一個類,叫做成員內部類。這個成員內部類可以靜態的(利用static關鍵字修飾),也可以是非靜態的。由於靜態的內部類在定義、使用的時候會有種種的限制。所以在實際工作中用到的並不多。    在開發過程中,內部類中使用的最多的還是非靜態地成員內部類。不過在特定的情況下,靜態內部類也能夠發揮其獨特的

把scrapyd設定系統後臺服務啟動項

一、設定為系統後臺服務 1、新建檔案/etc/init.d/scrapyd,名稱為scrapyd #!/bin/bash PORT=6800 HOME="/var/scrapyd" BIN="/usr/local/bin/scrapyd" pid=`netstat -l