2011-10-17 101 views
5

我正在尋找處理啓動其他片段的片段的最佳方法的一些建議。如何加載與當前片段相同的空間中的新片段

我正在轉換一個應用程序,我開始使用更多基於活動的方法編寫,並開始將它移動到使用碎片。我有一些片段用於啓動一個新的Activity,我想將它們移動到以當前片段所在的相同視圖啓動其他片段。

例如 - 我有一個活動,它有一個WebView,它使用WebViewClient來處理內部js-> java交互。我WebViewClient可以啓動其他活動,這在我以前一起做:

i = new Intent(context, GoogleMapActivity.class); 
startActivity(i); 

此網頁流量的活動可以是全屏或與上側的菜單視圖,但我想web視圖尊重佈局 - 這樣如果菜單存在,它應該在啓動新碎片時保持存在 - 我只是不知道編寫啓動碎片的代碼的最佳方法。

那麼......在片段中,有一種方法基本上是告訴一個新的片段加載到當前片段的相同空間,還是需要與Activity進行一些交互?

**編輯**

鑑於有可能使用幾個不同的佈局,我總是不知道我應該把目標定把片段,其中ID - 因此我需要知道,如果有一種方法可以在不知道id的情況下執行此操作(例如,在replace方法中)。

+0

看看這個問題。 http://stackoverflow.com/questions/7790945/how-can-i-use-fragmentmanager-to-display-fragment-abc-in-a-framelayout/7791116#7791116 – 2011-10-17 12:40:02

回答

5
getFragmentManager().beginTransaction() 
    .replace(((ViewGroup) getView().getParent()).getId(), fragment) 
    .addToBackStack(null) 
    .commit(); 

這應該用所需的片段替換父容器。

0

這應該可以通過FragementManager.replace()。查看documentation for Fragment,特別是那裏的「佈局」部分中較長的示例。

+0

鑑於有幾種不同的佈局可以被使用的時候,我並不總是知道我應該將哪個ID放到片段中 - 因此我需要知道是否有辦法在不知道ID的情況下執行此操作。或者我應該用什麼方法 - 即是否應該用相同的ID命名所有片段? – Martyn 2011-10-17 12:51:45

-1

如果你想添加片段,而取代它,使用:

getFragmentManager().beginTransaction().add(R.id.fragment_container, new Fragment()).commit(); 
相關問題