2010-12-15 118 views
1

如何在AlertDialog中顯示TabActivity? 我知道這是有點棘手,因爲我們應該運行TabActivity作爲正常的活動,AlertDialog中的Android TabActivity

例如,

Intent intent = new Intent(MyClass.this, Settings.class); 
startActivity(intent); 

其中設置 - TabActvivity。

我知道它設置AlertDialog視圖的唯一方法,但它不會工作。

View view = (View) ((LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE)) 
    .inflate(R.layout.settings, null); 
new AlertDialog.Builder(this).setTitle("AlertDialog").setView(view).show(); 

有沒有什麼辦法可以在AlertDialog中顯示TabActivity?

感謝,

回答

4

你有點混爲一談的意見和活動的概念,在這裏,但可能是最簡單的方式做你想要的是你的TabActivity的主題設置爲Theme.Dialog並啓動它,而不是使用AlertDialog並試圖將Activity包裝在另一個Activity內的彈出窗口內。爲了你自己的理智,不要沿着這條路進入初始型領域。

3

我不會真的建議這種做法,但既然你已經要求繼承人的行爲的示例代碼:

繼承人標籤佈局,其中有一個EditTextTAB1ButtonTAB2

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent">  
<LinearLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<TabWidget android:id="@android:id/tabs" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
/> 

<FrameLayout android:id="@android:id/tabcontent" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout android:id="@+id/tab1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:layout_centerHorizontal="true" 
    > 
    <EditText 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="TextBox" 
    /> 

    </LinearLayout> 
<Button android:id="@+id/tab2" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:text="A semi-random button" 
/> 
</FrameLayout></LinearLayout></TabHost> 

代碼膨脹此佈局的AlertDialog

AlertDialog.Builder builder=new AlertDialog.Builder(this); 
    LayoutInflater inflator=getLayoutInflater(); 
    View view=inflator.inflate(R.layout.main, null); 

    TabHost tabHost=(TabHost)view.findViewById(R.id.tabhost); 
    tabHost.setup(); 
    TabHost.TabSpec spec=tabHost.newTabSpec("tag1"); 
    spec.setContent(R.id.tab1); 
    spec.setIndicator("Clock"); 
    tabs.addTab(spec); 

    spec=tabHost.newTabSpec("tag2"); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("Button"); 
    tabs.addTab(spec); 

    builder.setView(view); 
    builder.setPositiveButton("OK", null); 
    builder.create().show(); 

正如我所說這不是推薦的方法通過上述號Yoni Samlan創建主題,而不是作爲建議。

+0

如果我有一個充氣器視圖,那麼我如何將ID傳遞給setContent? – chhameed 2014-03-04 14:02:13