日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Fragment的布局中自定义Layout的onSizeChanged添加组件失败的问题

發(fā)布時間:2024/4/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fragment的布局中自定义Layout的onSizeChanged添加组件失败的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天想做點(diǎn)東西,有些部分覺得用fragment比較合適,而且自己以前沒有用過這個,正好練習(xí)練習(xí)。剛開始搞沒多久就遇上了一個問題。。。。。

情況是這樣的,有倆個fragment,在activity創(chuàng)建的時候顯示第一個fragment,點(diǎn)擊該fragment上的按鈕時替換成第二個fragment。第二個fragment中有個自定義的layout,在這個layout中的onSizeChanged方法中添加其他組件(因?yàn)榻M件與layout長寬密切相關(guān))。

這樣問題就出現(xiàn)了,在activity的oncreate中add第一個fragment,在按鈕事件里replace第二個fragment。運(yùn)行的時候就會發(fā)現(xiàn)onSizeChanged方法中添加的組件都沒有顯示。那么問題到底在哪里?

經(jīng)過一番研究終于正常了,不過深層原因還有待高手解答。現(xiàn)將研究中的關(guān)鍵點(diǎn)記錄一下。

1、代碼是否執(zhí)行。onSizeChanged方法有可能沒有被調(diào)用。例如new出一個layout實(shí)例,然后通過addView方法放入父控件里,這樣的話沒有大小的改變,onSizeChanged方法就不會被調(diào)用。網(wǎng)上的方法是在自定義layout的構(gòu)造函數(shù)里調(diào)用setBackground,這樣就會執(zhí)行onSizeChanged方法。不過在上面的問題里,onSizeChanged實(shí)際上執(zhí)行了,所以不是這個問題。不過這個問題值得記錄一下,以便以后能防止出現(xiàn)。

2、onCreate中初始化layout。在網(wǎng)上沒有找到類似的問題,也沒有啥解決辦法,只好自己想辦法了。因?yàn)閘ayout添加至activity布局中可以,在fragment里不行,所以最開始以為是fragment的在布局這方面有問題。查了很多資料沒有發(fā)現(xiàn)這方面的區(qū)別,這時嘗試著用xml的方式將fragment直接加入activity,而不是在代碼里動態(tài)加入。發(fā)現(xiàn)成功了!

但是感覺著不是問題的所在,不過已經(jīng)開始有思路了。之前在onCreate里是add第一個fragment,而第二個fragment是在點(diǎn)擊事件后動態(tài)加入的,也就是說不是在onCreate中初始化自定義的layout的。而以xml方式添加的話就是在onCreate中初始化,會不會問題就在這里?

再次修改代碼,在onCreate中將倆個fragment都add,點(diǎn)擊事件不變。運(yùn)行,成功!

終于解決了問題,看來是要在onCreate下初始化自定義的layout才可以。不過問題的根本原因還不清楚,而且應(yīng)該有更方便的解決方法,希望能有高手指點(diǎn)一下!

?

總結(jié)

以上是生活随笔為你收集整理的Fragment的布局中自定义Layout的onSizeChanged添加组件失败的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。