Android TabActivity в AlertDialog - PullRequest
       23

Android TabActivity в AlertDialog

1 голос
/ 15 декабря 2010

Как отобразить TabActivity в AlertDialog? Я знаю, что это немного сложно, так как мы должны запустить TabActivity как обычное действие,

например.

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

, где Настройки - TabActvctivity.

Единственный способ, которым я знаю это, чтобы установить представление для AlertDialog, но это не будет работать.

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

Есть ли способ показать TabActivity в AlertDialog?

Спасибо

Ответы [ 2 ]

4 голосов
/ 15 декабря 2010

Вы как бы объединяете здесь концепцию видов и действий, но, вероятно, самый простой способ сделать то, что вы хотите, это установить для темы TabActivity значение Theme.Dialog и запустить его.вместо использования AlertDialog и попытки обернуть Activity внутри всплывающего окна внутри другого Activity.Ради вашего же здравомыслия, не идите по этой дороге на территорию начального типа.

3 голосов
/ 15 декабря 2010

Я не очень рекомендую этот подход, но так как вы запросили поведение, вот пример кода:

Вот вкладка макет , которая имеет EditText in tab1 и Button in tab2

<?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();

Как я уже сказал ЭТО НЕ РЕКОМЕНДУЕТСЯ ПОДХОД вместо этого создайте тему, как это предложено Йони Самланом выше.

...