1

フラグメントAが内部にあるアクティビティAがあります。

アクティビティAはレイアウトXを使用し、フラグメントAはレイアウトAを使用します。

レイアウトXのコード:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<fragment
    android:id="@+id/fragment1"
    android:name="android.app.DialogFragment"
    android:layout_width="wrap_content"
    android:layout_height="500dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="113dp"
    class="com.example.fragtester.FragA" />

</RelativeLayout>

レイアウトAは単なるtextview+linearlayoutです。

レイアウトBを使用する別のフラグメントBを設定しました。

これで、アクティビティAで次のコードを使用してフラグメントを変更します。

Fragment f = new FragB();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment1, f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null); 
ft.commit();

レイアウトAの下にレイアウトBが表示されることになります。

したがって、FrameLayoutを使用してフラグメントをレイアウトXでラップし、

ft.replace(R.id.FrameLayout1, f);

これで、ビューは正常に機能しています。ただし、別の問題が発生します。

レイアウトBはレイアウトAをカバーしていますが、ボタンはまだアクティブです。

つまり、レイアウトBを表示しているときに、レイアウトAが表示されていなくても、レイアウトAのボタンをクリックすることができます。

また、フラグメントC / D / E .....(レイアウトC / D / E ....)を追加しても、レイアウトAのボタンはアクティブなままです。

誰かがそれがなぜであるか説明できますか?フラグメントを間違って使用していますか?ありがとう!

解決する方法は、レイアウトAを空白にし、他のレイアウトを使用してそれをカバーすることです。しかし、それは「正しい」方法ではないようです??

4

3 に答える 3

3

フラグメントを削除して FrameLayout を追加します

   <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff" >
    </FrameLayout>

次に、プログラムでフラグメントを追加します。

Androidフラグメントボタンをクリックすると、フラグメントが通過します(フラグメントがそのように機能するかどうかはわかりません)。このような状況で私が行っていたのは、フラグメントのレイアウトをクリック可能にすることです。クリックが通過しないようにします。

于 2013-03-12T10:07:28.640 に答える
0

xml にフラグメントを含める代わりに、フラグメント用の空のコンテナを作成してみてください。たとえば、空のフレーム レイアウト。そして、プログラムでフラグメントをそこに配置します。

于 2013-03-12T09:52:26.587 に答える