簡體   English   中英

findViewById在<include>視圖上返回null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM