2012-09-25 50 views
0

我們已經爲我們的應用程序實現了一個類似Facebook的樣式菜單,它基本上允許您單擊按鈕並將視圖滑過一側以訪問隱藏在頂層視圖後面的菜單。Android全球菜單建築建議

當前,我們將所有視圖(該應用程序都有大量屏幕)作爲任何典型的Android應用程序放在單獨的XML文件中。我應該注意到我們大量使用碎片。

目標是以這種方式抽象出代碼,而不是將我們的活動和片段膨脹到頂層視圖,而是現在我們將它膨脹到此頂層父項的子項中作爲我們所有活動的一部分(我們所有的活動都是自定義活動的子類)。

menu.xml的工作方式是讓一個外部的FrameLayout承載一個空的嵌套子FrameLayout。

我們試圖避免做的是將這個外部菜單代碼包裹在每個視圖XML中的每一個,儘管這肯定會起作用。

我試圖找到一個菜單代碼的空白嵌套的FrameLayout在一個文件中的編程方式。然後,我們去的時候膨脹片段的或活動的XML,像這樣:

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false); 

,而不是這樣做,我們會膨脹成嵌套子的FrameLayout。像這樣的東西是什麼,我嘗試:

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false); 
    ((FrameLayout) getActivity().findViewById(R.id.child)).addView(listView); 

目前這會導致:「無法恢復活動沒有查看發現ID爲0x7f090019片段MyFragment [ID = 0x7f090019]」

任何輸入讚賞。謝謝!

回答

0

我對類似樣式菜單所做的工作是添加一個框架佈局並向其中添加一個片段。然後,我使用translateAnimation和layoutApp將屏幕翻譯到正確的位置。我把所有這些代碼在分割的代碼很好,這樣我可以只是調用SlideOutMenu使用它slidingDrawerActivity

希望這有助於 - 如果你想要更多DEETS只是讓我知道

編輯:

使用支持庫替換使用片段的幀佈局的代碼

FragmentTransaction FT=getFragmentManager().beginTransaction(); 
FT.replace(R.id.yourFrameLayout, new YourFragment(), yourFragmentTag); 
FT.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
FT.commit(); 
+0

我遇到了'將片段擴充到其中'部分的問題。這個問題可能與我的自定義家長活動有關,尚不確定。 – Bijan

+0

您使用兼容性庫嗎?如果是的話,你需要使用擴展FragmentActivity而不是普通的活動,並使用get support fragment manager。請參閱:http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html –

+0

父活動是FragmentActivity。 – Bijan