Android中findViewById返回為空null的快速解決辦法
【問題描述】
Android中如下代碼:
LinearLayout groupPollingAddress = (LinearLayout)findViewById(R.layout.fragment_field_list);
返回為null。
【解決過程】
1.參考:
android – getActivity().findViewById(R.layout.contacts_list_view) returns null – Stack Overflow
AndroidGUI27中findViewById返回null的快速解決辦法 – 玄機逸士的專欄 – 博客頻道 – CSDN.NET
但是沒搞定。
2.后來是去搜:
findViewById R.layout null
而最終找到并參考:
[Android]inflate方法與 findViewById 方法區(qū)別 | LayoutInflater的inflate函數(shù)用法詳解 – loyea – 博客園
去換為:
LayoutInflater inflater = (LayoutInflater)tabContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout groupPollingAddress = (LinearLayout)inflater.inflate(R.layout.fragment_field_list, null);
即可。
3.另外的,類似的:
TextView tab1AllGroupPollingAddressLabel = (TextView) findViewById(R.id.lblVariable);
也是返回null,所以去換為:
TextView tab1AllGroupPollingAddressLabel = (TextView) groupPollingAddress.findViewById(R.id.lblVariable);
即可。
【總結(jié)】
此處findViewById返回為null,原因是:
沒有在索要find的子view的Parent中去找
或者是:
當(dāng)然的View下面,沒有包含對應(yīng)的想要找的view,
從而導(dǎo)致找不到,返回null。
解決辦法是:
找到要找的view的parent或root的view
再在父級的view中找你要的子view就可以了。
常見的寫法是:
LayoutInflater inflater = (LayoutInflater)tabContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout groupPollingAddress = (LinearLayout)inflater.inflate(R.layout.fragment_field_list, null);
其中是先去找到當(dāng)前系統(tǒng)的Layout,然后實例化,然后在全局的view中再去找你的view就可以找到了。
PS:Android 自定義view中findViewById為空的快速解決辦法
網(wǎng)上說的都是在super(context, attrs);構(gòu)造函數(shù)這里少加了一個字段,其實根本不只這一個原因,屬于view生命周期的應(yīng)該知道,如果你在自定義view的構(gòu)造函數(shù)里面調(diào)用findViewById 鐵定為空的,因為這個時候view還在初始化階段,還沒有添加到activity的XML布局上,所以你怎么調(diào)用都是沒用的,解決辦法就是把我們的findViewById方法換一個生命周期上面調(diào)用就OK了,比如我就是在
protected void onAttachedToWindow() {
super.onAttachedToWindow();}
上面調(diào)用的
相關(guān)文章
如果你在Android Studio碰到gradle的各種問題就來看這篇文章吧(強烈建議收藏)
這篇文章主要介紹了你可能會在Android Studio碰到gradle的各種問題,完美解決關(guān)于gradle的全部問題,切記收藏以防需要的時候找不到了哦2021-08-08
Android EditText限制輸入整數(shù)和小數(shù)的位數(shù)的方法示例
這篇文章主要介紹了Android EditText限制輸入整數(shù)和小數(shù)的位數(shù)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
Android的OkHttp包中的HTTP攔截器Interceptor用法示例
攔截器是OkHttp處理HTTP請求方面所具有的一個強大特性,這里我們就來看一下Android的OkHttp包中的HTTP攔截器Interceptor用法示例,需要的朋友可以參考下2016-07-07
Android?Camera+SurfaceView自動聚焦防止變形拉伸
這篇文章主要為大家介紹了Android自定義相機Camera+SurfaceView實現(xiàn)自動聚焦防止變形拉伸詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Kotlin使用TransitionDrawable實現(xiàn)顏色漸變效果流程講解
這篇文章主要介紹了Kotlin使用TransitionDrawable實現(xiàn)顏色漸變效果,這里,我們通過TransitionDrawable顯示顏色漸變效果,包括背景顏色的變化,以及圖片與圖片的漸變效果2023-02-02
Android ListView自動顯示隱藏布局的實現(xiàn)方法
這篇文章主要介紹了Android ListView自動顯示隱藏布局的實現(xiàn)方法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
Android Support Library 標(biāo)題欄(Toolbar)滾動效果實現(xiàn)方法
下面小編就為大家?guī)硪黄狝ndroid Support Library 標(biāo)題欄(Toolbar)滾動效果實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
android 解析json數(shù)據(jù)格式的方法
這篇文章主要介紹了android 解析json數(shù)據(jù)格式的方法,有需要的朋友可以參考一下2014-01-01

