1

Activityに が 1 つしか含まれておらず、Fragmentのビューが次のようFragmentに作成されているとします。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    return inflater.inflate(R.layout.fragment, container, false);
}

次に、フラグメントのルート ビュー ( によって返されるonCreateView) を、囲んでいるアクティビティにアタッチする必要があります。

質問:

  1. アクティビティとフラグメントの間のビュー階層にはいくつのレベルがありますか? つまり:

    <Activity View> -> <Fragment View>
    

    また

    <Activity View> -> <Some ViewGroup> -> <Fragment View>
    

    の私のテストではonCreateViewViewGroup containerですnull。どうしてこれなの?

  2. 私が両方で定義した場合activity_main.xml

    <fragment
        android:id="@+id/fragment_foo"
        />
    

    そして(このフラグメントのルートビュー要素でfragment_foo.xmlあると仮定します):ListView

    <ListView
        android:id="@+id/listview_foo"
        />
    

    では、フラグメントのルート ビューの ID はfragment_fooですかlistview_foo?

    私のテスト結果は前者です。この結果は期待されていますか?これは、フラグメントのレイアウトのルート要素の id を設定してはならないということですか (とにかく使用されないため)?

  3. フラグメントのビュー階層は囲んでいるアクティビティのビュー階層に接続されているため、フラグメント内のビューを見つける際に両方が機能するはずです。

    getActivity().findViewById()
    

    getView().findViewById()
    

    これは正しいです?

4

1 に答える 1

2

Hierarchy Viewer (エミュレーターで実行) を使用して、この質問 (他の多くのレイアウトに関する質問/問題) を解決できます。アクティビティの正確なビュー構造が表示されます。

于 2013-06-30T05:40:21.747 に答える