Android片段重叠
Posted
技术标签:
【中文标题】Android片段重叠【英文标题】:Android fragments overlap 【发布时间】:2014-03-05 12:04:54 【问题描述】:我有一个包含两个片段的活动,一个显示列表,一个显示单击项目的详细信息。启动应用程序时,详细信息部分是静态的,一旦我单击一个项目,它就会被替换。问题是旧片段没有被替换,所以两个视图都在彼此之上。
我的活动布局是:
<?xml version="1.0" encoding="utf-8"?>
<fragment
android:id="@+id/listFragment"
android:layout_
android:layout_
android:layout_weight="1"
class="com.fragments.FragmentOrderList" >
</fragment>
<fragment
android:id="@+id/detailFragment"
android:layout_
android:layout_
android:layout_weight="2"
class="com.fragments.FragmentOrderDetails" >
</fragment>
细节片段的布局是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_ >
<TextView
android:id="@+id/tvOrderDetail"
android:layout_
android:layout_
android:text="test view of details fragment" >
</TextView>
在上面的布局中,我们也看到了最初看到的静态文本。我活动中替换片段的代码是这样的
FragmentTransaction transaction = getFragmentManager().beginTransaction();
FragmentOrderDetails newFragment = new FragmentOrderDetails();
newFragment.setArguments(b);
transaction.replace(R.id.detailFragment, newFragment);
transaction.addToBackStack(null);
transaction.commit();
对我来说,它看起来不是“替换”而是“添加”。我是否必须始终删除旧片段?还是我必须在这里采用不同的方法?在我看来,只有原始片段保留在那里,并且在第二个,第三个,......替换前一个片段被正确替换,只有静态片段始终保留在那里。
【问题讨论】:
【参考方案1】:而不是在布局中使用xml fragment
:
<fragment
android:id="@+id/detailFragment"
android:layout_
android:layout_
android:layout_weight="2"
class="com.fragments.FragmentOrderDetails" >
</fragment>
使用一些容器,如 LinearLayout
或 FrameLayout
和一些 containerId。
然后以编程方式首先使用 containerId 将片段添加到该容器,然后将该容器的内容也替换为 containerId。
【讨论】:
我花了很长时间才弄清楚这一点。你终于给我答案了。以上是关于Android片段重叠的主要内容,如果未能解决你的问题,请参考以下文章