![](/img/trans.png)
[英]findViewById returns null on a LinearLayout inside an <include>d view
[英]findViewById returns null on an <include> view
讓我們直接進入代碼。
活動代碼,onCreate方法
setContentView(R.layout.main);
View main_view = findViewById(R.id.main_view);
View view_flipper = main_view.findViewById(R.id.vf);
View first_tab = view_flipper.findViewById(R.id.prev_pane);
main.xml布局代碼:
<ViewFlipper android:id="@+id/vf"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<include android:id="@+id/prev_pane" layout="@layout/vf_inner" />
<include android:id="@+id/cur_pane" layout="@layout/vf_inner" />
<include android:id="@+id/next_pane" layout="@layout/vf_inner" />
</ViewFlipper>
問題! 主視圖已正確找到,ViewFlipper也是如此,但找不到prev_pane或cur_pane或next_pane,返回空指針。 有什么想法嗎?
通過使用Intent通過選項卡調用此活動。 除了包含id之外,所有引用都已正確解析
當我檢查變量時,我在mChildren中找到了vf_inner布局的內容
那是因為<include />
標簽不是UI層次結構中的實際視圖。 它們更像是android工具的復制和粘貼指令。
如果要在運行時查找窗格,請將ID添加到包含布局的根元素中。 這樣就可以通過findViewById()
找到它們。
您可以做的一件事是將<include>
語句包裝在父布局(它仍然是您的主父布局的子級)中。 為這些視圖提供不同的ID,以便您可以分別findViewById
每個視圖的findViewById
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.