解決Activity嵌套碎片在fragment中操作Activity控制無效問題

問題:Activity中嵌套多個fragment進行佈局切換,通常情況下,我們在fragment的onCreatView()的方法返回的View就可以操作對應fragment的佈局控件,但當我們想在fragment中操作Activity中的控件時,通過以下方式,發現對Activity中的控件操作無效

<span style="font-size:24px;">slidingTabLayout = ((SlidingTabLayout)LayoutInflater.from(getContext()).inflate(R.layout.fragment_Home_tabLayout, null)
slidingTabLayout.setBackgroundColor(Color.argb(0, 0, 0, 0));</span>

解決方法:使用getActivity()方法取代 LayoutInflater.from( getContext ).inflate( xxx );

<span style="font-size:24px;">slidingTabLayout = ((SlidingTabLayout) getActivity().findViewById(R.id.fragment_Home_tabLayout));</span>
<span style="font-family: Arial, Helvetica, sans-serif; text-align: center;"><span style="font-size:14px;">slidingTabLayout.setBackgroundColor(Color.argb(0, 0, 0, 0));</span></span>


原因是通過 LayoutInflater填充器獲得的View是新生成對View 與Activity中setContentView(R.layout.activity_main)生成View不是同一對象,操作對象不同,效果自然無效

使用getActivity()方法可以獲取當前Activity中所有控件(包括在fragment中的子控件)



以上。
 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章