Ошибка Android с TabActivity / TabWidget - PullRequest
2 голосов
/ 15 декабря 2009

Я пытаюсь создать TabActivity для моего приложения для Android. Когда мой макет XML выглядит следующим образом с фиктивным содержимым TextView для моих 2 вкладок, все выглядит нормально.

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

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

        <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="wrap_content"
            android:padding="10px">

            <TextView android:id="@+id/login_form" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="DUMMY LOGIN FORM" />
            <TextView android:id="@+id/register_form" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="DUMMY REGISTER FORM" />

        </FrameLayout>
    </LinearLayout>
</TabHost>

Я бы хотел заменить каждый TextView на LinearLayout, который содержит несколько элементов View. Как бы то ни было, если я попытаюсь заменить строки TextView чем-то вроде следующего, то я немедленно получу окно принудительного закрытия.

<LinearLayout android:id="@+id/login_form" android:layout_width="fill_parent" layout_height="fill_parent" android:orientation="vertical">
    <TextView android:id="@+id/username_label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/username" />
</LinearLayout>
<LinearLayout android:id="@+id/register_form" android:layout_width="fill_parent" layout_height="fill_parent" android:orientation="vertical">
    <TextView android:id="@+id/username_desired_label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/username_desired" />
</LinearLayout>

Почему это заставило меня закрыть Силу? Должен ли я использовать другое представление, отличное от LinearLayout, чтобы сгруппировать содержимое вкладки вместе?

Редактировать: Если это имеет отношение к моей проблеме, я расширяю класс TabActivity, и мой метод onCreate выглядит следующим образом:

protected void onCreate(Bundle savedInstanceState) {
    // display the login/register view
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_register);

    // associate the tab content with each tab, and specify the tab headers
    setDefaultTab(0);
    TabHost tabs = getTabHost();
    tabs.addTab(tabs.newTabSpec("login").setIndicator(getResources().getText(R.string.login)).setContent(R.id.login_form));
    tabs.addTab(tabs.newTabSpec("register").setIndicator(getResources().getText(R.string.register)).setContent(R.id.register_form));
}

Редактировать: В соответствии с запросом, здесь трассировка стека, а также сообщение об ошибке, читающее только «Источник не найден»:

Тема [<3> главная] (приостановлено (исключение RuntimeException)) ActivityThread.performLaunchActivity (ActivityThread $ ActivityRecord, Intent) линия: 2401 ActivityThread.handleLaunchActivity (ActivityThread $ ActivityRecord, Intent) строка: 2417 ActivityThread.access $ 2100 (ActivityThread, ActivityThread $ ActivityRecord, Intent) линия: 116 ActivityThread $ H.handleMessage (сообщение) линия: 1794 ActivityThread $ H (Handler) .dispatchMessage (Message) строка: 99 Looper.loop () строка: 123 Строка ActivityThread.main (String []): 4203 Method.invokeNative (Object, Object [], Class, Class [], Class, int, булево) строка: не доступно [родной method] Method.invoke (Объект, Объект ...) строка: 521 ZygoteInit $ MethodAndArgsCaller.run () строка: 791 ZygoteInit.main (String []) строка: 549 NativeStart.main (String []) строка: недоступно [собственный метод]

1 Ответ

0 голосов
/ 15 декабря 2009

Ух ты, я идиот. В моих объявлениях LinearLayout они оба включали атрибуты layout_height вместо обязательных атрибутов android:layout_height. Глупый контроль с моей стороны, я больше не буду повторять эту ошибку.

Спасибо, что нашли время посмотреть, DroidIn.net.

...