フラグメント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を空白にし、他のレイアウトを使用してそれをカバーすることです。しかし、それは「正しい」方法ではないようです??