Android片段重叠以前的视图和按钮监听器

问题描述:

我有一个活动A与里面的片段A.Android片段重叠以前的视图和按钮监听器

活性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:

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.

所以我使用的FrameLayout包裹的片段布局X和使用

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

现在视图很好地工作。虽然,另一个问题出现了。

尽管布局B覆盖布局A,但按钮仍处于活动状态。

这意味着当我查看布局B时,即使我没有看到它,我仍然可以单击布局A上的按钮。

甚至当我添加碎片C/D/E .....(布局C/D/E ....)时,布局A上的按钮仍处于活动状态。

任何人都可以解释为什么是这样吗?我是否错误地使用了片段?谢谢!

一种通过的方法是使布局A空白,并使用其他布局来覆盖它。但它似乎并不是“正确”的方式?

而不是在您的XML中有片段,尝试创建一个碎片的空容器。例如空框架布局。然后以编程方式将你的片段放在那里。

+0

请问您能解释一下为什么是这样吗?谢谢!! – 2013-03-13 08:06:22

取出片段并添加的FrameLayout

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

然后以编程添加片段。

在android片段按钮中点击传递片段(我不知道片段是否应该像这样工作)。在这种情况下我曾经做过的事情是让片段的布局可点击。所以点击不会通过。

+1

我知道这是为什么吗?在布局和编程中添加片段有什么区别?谢谢! – 2013-03-13 08:05:55

将以下属性添加到顶层片段的XML根布局中。

android:clickable="true" 

这将确保触摸事件不会比顶层传播得更远。