0

ビューページャー付きのアクションバーがあります。正しく理解していれば、アクションバーでクリックされるタブごとにフラグメントを作成する必要がありました。このために、Fragment から継承する xml レイアウト ファイルとクラスを作成しました。onCreateViewこれらのクラスでは、 を返しますinflater.inflate(xml_layout, container, false)。Everyting は正常に動作しますが、私の問題は次のとおりです。

ここで、これらのフラグメントの 1 つをマップ V2 フラグメントを含むレイアウトにしたいと考えています。

実際には、フラグメントを次の xml のようにしたいと考えています。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_mappart"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/grey" >

<LinearLayout
    android:id="@+id/map_heading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <View
        android:background="@drawable/rectangle_shape"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginLeft="50dp" />

    <TextView 
        android:id="@+id/map_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/black"
        android:layout_gravity="bottom"
        android:textSize="16sp"
        android:layout_marginLeft="10dp"
        android:layout_marginBottom="2dp" />

</LinearLayout>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/horizontal_layout_map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:layout_marginBottom="50dp" >

    <View 
        android:background="@drawable/rectangle_shape_yellow"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginTop="250dp" />

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapfragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />

</LinearLayout>

<View
    android:background="@drawable/rectangle_shape"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginLeft="175dp"
    android:layout_marginTop="-50dp" />

    </LinearLayout>

ここで、Fragment から拡張してこの xml を拡張するクラスを作成すると、マップ V2 のフラグメントが開始する xml 行でエラーが発生します。

SupportMapFragment から拡張しsuper.onCreateView()て自分の onCreateView に戻ると、すべて正常に動作しますが、マップの周りのレイアウトを制御することはできません。マップを自分の特定のレイアウトにネストしたい。したがって、マップ V2 をディスプラットするようにすべてが設定されていることはほぼ確実ですが、実際の問題は、フラグメントをフラグメントに膨らませることができないことです。

十分に説明したことを願っています。誰かが私を助けてくれたら、どうもありがとう!

4

1 に答える 1

0

残念ながら、フラグメントをネストすることはできません。これは、ここで実行しようとしていることです。これは、自分のアプリで使用できた便利な機能であり、この制限を回避するのは複雑な場合があります。

あるビュー内のフラグメントが同じ親階層内の別のビュー内のフラグメントをインスタンス化することは可能ですが、それ自体のビュー階層内のフラグメントをインスタンス化することはできません。

やりたいことをする方法はたくさんあります。あなたはただあなたのデザインについて考える必要があるでしょう。

于 2013-01-31T21:48:24.477 に答える