我正在嘗試使用操作欄選項卡和片段實現一個非常基本的導航結構。基本上我有三個片段是使用操作欄上的選項卡選擇的。這些片段中的每一個都是一個listview,它應該允許用戶選擇一個項目並打開一個詳細視圖。操作欄選項卡導航設計/問題
我想知道從現有片段向屏幕添加新片段的最佳方法。我目前有詳細視圖全部作爲活動實現(這顯然不是理想的,因爲操作欄選項卡不存在,並且使用後退按鈕的導航返回到選項卡1,無論當前位置如何)。
我在我的MainActivity中添加了所有列表片段;
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (tab.getPosition() == 0) {
Frag1 frag = new Frag1();
ft.replace(android.R.id.content, frag);
} else if (tab.getPosition() == 1) {
Frag2 frag = new Frag2();
ft.replace(android.R.id.content, frag);
} else if (tab.getPosition() == 2) {
Frag3 frag = new Frag3();
ft.replace(android.R.id.content, frag);
}
}
我需要在這些片段上實施以啓動詳細視圖?我試過這樣的東西,但導航仍然無法工作,我想如何。
private void onListItemClick(View v, int pos, long id) {
Log.d(TAG, "Clicked at position: " + pos);
NewsModel selectedModel = newsItems.get(pos);
Log.d(TAG, "Item: " + selectedModel.getTitle());
NewsDetailFragment fragment = NewsDetailFragment.newInstance(selectedModel);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content, fragment);
ft.addToBackStack(null);
ft.commit();
我一般來自iOS世界,所以我的一些範例可能會與Android的運作方式有點不同。
謝謝!
爲什麼會一直導航回載入標籤1?您應該保存用戶選擇的選項卡,並在您的活動重新加載時將其恢復。否則,當他們點擊主頁按鈕並返回時,您會遇到同樣的問題。 – ianhanniballake 2013-04-04 18:10:14
嗯,我想這是一個單獨的(容易解決)問題比我的主要問題。一旦我顯示了一個列表片段,我該如何處理顯示一個新的「細節」片段並獲得所需的返回或向上按鈕行爲?我是否需要重寫任何方法來展開我剛添加到後臺堆棧的事務? – mElling 2013-04-04 18:25:21