Можно ли определить содержимое каждой вкладки в отдельном XML-файле? - PullRequest
0 голосов
/ 28 июня 2010

Я хотел бы определить содержимое каждой вкладки в отдельном XML-файле, чтобы можно было использовать визуальный редактор в Eclipse.То есть все вкладки не накладываются друг на друга.Визуальный редактор даже не работает с примером XML, представленным здесь: [текст ссылки] [1] [1]: http://developer.android.com/guide/tutorials/views/hello-tabwidget.html «Здесь», просто есть исключение нулевого указателя.

Я попытался определить каждое нажатие в отдельном файле, например:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
<TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</RelativeLayout>

И при добавлении вкладки я использую:

mTabHost.addTab(mTabHost.newTabSpec("tab_in").setIndicator("Input").setContent(R.layout.input));

Но это вызывает сбой приложенияна запуске.Есть ли способ сделать это?

Спасибо

Ответы [ 4 ]

3 голосов
/ 29 июня 2010

Только мои 2цента. У меня было много проблем с использованием табло на основе Intent. Я столкнулся с действительно странным поведением, особенно с виджетом ListView. Мне удалось избавиться от всех моих проблем, когда я начал переписывать свой проект на вкладку View на основе вместо использования отдельных намерений / действий

Вы всегда можете иметь отдельный XML для каждой вкладки

Короче вот что я сделал:

public class TabOneView implements TabContentFactory {

    private LayoutInflater mInflater;

    public TabOneView(Context context){
        mInflater = LayoutInflater.from(context);
    }
    @Override
    public View createTabContent(String arg0) {

        View v = mInflater.inflate(R.layout.tab_one, null);

        /**
         * Add your code here for buttons/list etc
         * An object lookup for your Button: 
         */
        Button b = (Button)v.findViewById(R.id.btn01);

        b.setOnClickListener(mListener);
        //...more code
        return v;
    }

}
0 голосов
/ 28 июня 2010

Я думаю, что то, что вы делаете, сработает, если у вас будет действительный XML.

TextView выдает эти ошибки из-за части android:text="@+id/TextView01".Измените его на android:text="Some literal string", и оно должно работать (или android:text="@strings/tabtextview01" при условии, что файл strings.xml содержит эту строку).

Ваш XML должен быть:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
<TextView android:id="@+id/TextView01"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@strings/tabTextView01" /><!--
or android:text="The string literal to display." -->
</RelativeLayout>
0 голосов
/ 28 июня 2010

вы также можете посмотреть на использование TabHost, которое позволяет вам сделать каждую вкладку «активностью»

0 голосов
/ 28 июня 2010

Гораздо удобнее, если вы напишите TabContentFactory или у вас будет отдельное действие для каждой вкладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...