2012-06-18 42 views
1

我試圖在Android 2.2-4.0上使用選項卡。我已經擴展this演示:http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabs.html有:Android 4.0遇到問題的選項卡

TabSpec ts = mTabHost.newTabSpec("randomTab"); 
Intent intent = new Intent(); 
intent.setClass(this, FragActiv.class); 
ts.setContent(intent); 
ts.setIndicator("randomTab"); 
mTabManager.addTab(ts, FragActiv.class, new Bundle()); 

但我不知道該怎麼添加到onTabChanged,所有的魔法發生在演示。

我需要做的是:
我有一個ListFragment並單擊某個項目時,應在小屏幕/縱向顯示在一個單獨的畫面細節,或者一個大屏幕上/橫向,在同一屏幕上顯示具體細節的片段。我可以用碎片解決這個問題嗎?或者我應該試着讓FragmentActivities正常工作?

通過下面這個例子:example,我能夠實例化一個FragmentActivity,但它佔用了整個屏幕,而不僅僅是標籤菜單下的面積。

是否有任何機會使用Activities(或FragmentActivities)而不是Fragments作爲標籤的內容?

+0

說**類似的問題我已經擴展了此演示**,然後提供一個鏈接是,你沒有顯示如何擴展它。如果該演示正常,但您的修改不會,那麼除非您顯示您的代碼,否則這裏沒有人會告訴您您做了什麼錯誤。至於使用活動作爲標籤內容,是的,你可以爲所有版本的Android做到這一點。它已被棄用,但仍然有效。如果你想要一個基於片段的解決方案,然後張貼代碼,有人會幫助。如果您想使用已棄用的方法,它將與您的選擇一起使用。 – Squonk

+0

它與鏈接中提供的示例沒有任何區別。我不想使用任何廢棄的東西。我將編輯我的問題。 – Buffalo

回答

0

沒有必要做我想做的事(使用TabActivity作爲標籤的內容)。我通過在我的tabContent中有兩個容器解決了這個問題,一個用於ListView片段,另一個用於細節片段。這是我現在的佈局:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <HorizontalScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:fillViewport="true" 
     android:scrollbars="vertical" > 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" /> 
    </HorizontalScrollView> 

    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_weight="0" /> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:baselineAligned="false" 
     android:fadingEdge="none" > 

     <FrameLayout 
      android:id="@+android:id/realtabcontent" 
      android:layout_width="0px" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" /> 

     <FrameLayout 
      android:id="@+android:id/details_container" 
      android:layout_width="0px" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:visibility="gone" /> 
    </LinearLayout> 
</LinearLayout> 

最初,details_container沒有了。您可以如下使用它:

 ft.replace(R.id.details_container, detailsFragment); 
     FrameLayout detailsLayout = (FrameLayout) mActivity.findViewById(R.id.details_container); 
     detailsLayout.setVisibility(View.VISIBLE);