2013-06-26 123 views
0

我想要做的是有一個主/細節風格的應用程序,其中我的選擇器選項之一是Google Map,在地圖佈局下面有一些額外的按鈕。用包含片段的佈局替換片段

我所有的其他選項只需要加載一個片段導入的FrameLayout,使用類似:

getSupportFragmentManager().beginTransaction() 
    .replace(R.id.content, myFragment, fragTag) 
    .commit(); 

我不能做到這一點與MapFragment因爲我需要其他的東西在佈局和嵌套片段不支持(但希望)。所以,我需要用一個包含片段的複合視圖替換常規片段,但我不確定片段管理應該如何工作。

我不認爲我可以叫

getSupportFragmentManager().beginTransaction() 
    .replace(R.id.content, myCompositeView, fragTag) 
    .commit(); 

目前,我這樣做:

Fragment currentFrag = getSupportFragmentManager().findFragmentById(R.id.content); 
getSupportFragmentManager().beginTransaction().remove(currentFrag); 

LayoutInflater inflator = LayoutInflater.from(this); 
ViewGroup container = (ViewGroup)findViewById(R.id.content); 
container.removeAllViews(); 

View mapView = inflator.inflate(R.layout.store_finder, container, true); 

再次與其他片段取代這個當它使得它有點亂我需要再次從佈局中刪除所有視圖。另外,我不確定如何在像這樣設置之後正確刪除MapFragment。

我會很感激的任何幫助,有人把我放心了:)

腳註:顯然嵌套片段的事了,但不知道這是我想要去的東西的方法簡單。 http://developer.android.com/about/versions/android-4.2.html#NestedFragments

+0

我用這一招:http://pastebin.com/CLRNd4BT怎麼樣了? – deadfish

+0

它看起來像你正在用另一個片段替換一個片段?這不是我要求的 –

+0

*,但不知道這是我想要簡單的事情的方式。* - 沒有另一種非混亂的方式。一個片段被設計爲被另一片段替換,而不是用佈局+片段替換。 – Luksprog

回答

0

嵌套的片段如suppported,請參閱:

http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager()

我在當前的應用程序/項目中使用他們,他們工作的偉大。不確定在映射視圖中使用它們是否還有其他約束條件?

// WildStyle

+0

我剛剛看到他們支持並用一個小腳註更新了我的問題。我覺得這可能比需要更混亂。我發現處理MapFragments是一種憎惡,因爲在UI線程和AsyncTasks之間以及在Fragments中完成的東西和在Activities中完成的東西之間有很多切換。我不想讓這更復雜,它已經是:\ –

+0

我可以理解,但是,如果你想要一個複雜的複合視圖,並希望利用簡單的替換即與另一個片段,然後這將也許是最好的選擇。否則,也許你可以在你的主佈局中有另一個內容視圖/容器專門用於映射,分開使用(當不需要時顯示/隱藏)? – WildStyle

+0

我真的需要添加一個按鈕和一個TextView。也許嵌套碎片是最好的方式來做到這一點... –