2014-02-07 127 views
0

我有兩個片段的活動,一個顯示列表,一個顯示點擊項目的細節。當啓動應用程序時,細節部分是靜態的,一旦我點擊一個應該被替換的項目。問題是舊的片段沒有被替換,所以兩個視圖都是彼此重疊的。Android片段重疊

我的活動佈局是:

<?xml version="1.0" encoding="utf-8"?> 

<fragment 
    android:id="@+id/listFragment" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    class="com.fragments.FragmentOrderList" > 
</fragment> 

<fragment 
    android:id="@+id/detailFragment" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    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_width="match_parent" 
android:layout_height="match_parent" > 


<TextView 
    android:id="@+id/tvOrderDetail" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    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(); 

對我來說,它看起來是不是「替代」,而是一個「添加」。我是否必須總是刪除舊的片段?或者我必須在這裏採用不同的方法?在我看來,只有原始片段停留在那裏,並在第二,第三,...替換前一個片段被正確替換,只是靜態的片段始終停留在那裏。

回答

3

而不是使用佈局xml fragment的:

<fragment 
    android:id="@+id/detailFragment" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    class="com.fragments.FragmentOrderDetails" > 

</fragment> 

用一些容器像LinearLayoutFrameLayout一些數據筒。 然後以編程方式首先使用containerId將碎片添加到此容器,然後用containerId替換此容器的內容。

+0

它花了我永遠的解決這個問題。最後你給我答案。 – BlackHatSamurai