Я пытаюсь создать 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 [])
строка: недоступно [собственный метод]