有趣的问题在这里,我希望有人能说清楚。
我目前在同一个屏幕上有一个带有滑动抽屉的地图v2片段(我不知道)。一旦用户完成他们的任务,他们可以拉动滑动绘图并单击“完成”。这使用了SupportFragmentManager,我基本上最终用一个全新的片段替换了屏幕内容。
但是,用户仍然可以单击滑动抽屉上的内容,即使它已被新片段替换。任何提示?
以下是责任代码的骨架结构:
activity_map.xml
<RelativeLayout android:id="@+id/activity_map">
<LinearLayout>
<include layout="@layout/toolbar"/>
<fragment android:id="@+id/fragment_map"
android:name="com.foo.fragment.MapFragment" />
</LinearLayout>
<SlidingDrawer>
...
</SlidingDrawer>
</RelativeLayout>
MapActivity.java
...
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.activity_map, newFragment, TAG);
transaction.addToBackStack(null);
transaction.commit();
答案 0 :(得分:2)
你应该尝试这样做
activity_map.xml
<FrameLayout
android:id="@+id/container>
</FrameLayout>
fragment_map.xml
<RelativeLayout android:id="@+id/activity_map">
<LinearLayout>
<include layout="@layout/toolbar"/>
<fragment android:id="@+id/fragment_map"
android:name="com.foo.fragment.MapFragment" />
</LinearLayout>
<SlidingDrawer>
...
</SlidingDrawer>
</RelativeLayout>
现在,在您的活动中,您应首先在FrameLayout(activity_map.xml)中启动一个具有布局fragment_map
的新片段(比如说AMapFragment)。请注意,以下代码将成为片段的一部分(AMapFragment)
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.activity_map, newFragment, TAG);
transaction.addToBackStack(null);
transaction.commit();
并将此行transaction.replace(R.id.activity_map, newFragment, TAG);
更改为transaction.replace(R.id.container, newFragment, TAG);
答案 1 :(得分:0)
在这种情况下,最简单和最优雅的解决方案是在我的新片段的静态xml布局文件中设置clickable =“true”。
下一步是手动将侦听器关联到此片段上的新按钮和文本编辑。
像魅力一样!