2013-04-04 90 views
0

我正在嘗試使用操作欄選項卡和片段實現一個非常基本的導航結構。基本上我有三個片段是使用操作欄上的選項卡選擇的。這些片段中的每一個都是一個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的運作方式有點不同。

謝謝!

+0

爲什麼會一直導航回載入標籤1?您應該保存用戶選擇的選項卡,並在您的活動重新加載時將其恢復。否則,當他們點擊主頁按鈕並返回時,您會遇到同樣的問題。 – ianhanniballake 2013-04-04 18:10:14

+0

嗯,我想這是一個單獨的(容易解決)問題比我的主要問題。一旦我顯示了一個列表片段,我該如何處理顯示一個新的「細節」片段並獲得所需的返回或向上按鈕行爲?我是否需要重寫任何方法來展開我剛添加到後臺堆棧的事務? – mElling 2013-04-04 18:25:21

回答

1

Supporting Tablets and Handsets training document所述,使用Fragment s來顯示主/細節視圖的標準方式是在手持設備上(如果您沒有足夠的空間顯示兩者)和平板電腦上的單獨活動。該SDK附帶了一個實現此建議的主/細節示例(如果您使用的是Eclipse,請轉至新建 - >其他 - > Android-> Android活動 - >主/細節流程)。

您可以將此培訓與您已擁有的標籤代碼結合使用(當選中標籤時替換左側片段,也可能希望在選擇標籤時刪除右側的詳細視圖)以獲取適用於所有Android設備的佈局。

您可能會覺得有用的一些附加信息是Multi-pane layout design guidelines和整個Fragment Training set

+0

所以看起來像我需要保持單獨的活動中包含的細節片段與主片段(至少對於較小的屏幕設備)。這看起來正是我所期待的;今天我會說這個。 – mElling 2013-04-05 13:05:44