Ошибка Android TabView? - PullRequest
       15

Ошибка Android TabView?

5 голосов
/ 14 ноября 2011

Я пытаюсь реализовать Tab View для своей деятельности. Я получаю сообщение об ошибке.

java.lang.IllegalArgumentException: необходимо указать способ создания индикатора вкладки

     Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this, MonthActivity.class);

        // Initialize a TabSpec for each tab and add it to the TabHost
        spec = tabHost.newTabSpec("Month")
                      .setContent(intent);
        tabHost.addTab(spec);

        // Do the same for the other tabs
        intent = new Intent().setClass(this, WeekActivity.class);
        spec = tabHost.newTabSpec("Week")
                .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, DayActivity.class);
        spec = tabHost.newTabSpec("Day")
                .setContent(intent);
        tabHost.addTab(spec);
        tabHost.setCurrentTab(2);

Это мой xml, и я объявил Действия в манифесте.

<?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" >

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

    <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"
        android:padding="5dp" >
        </FrameLayout>
</LinearLayout>

Где я делаю свою ошибку? Спасибо за ваше время и вклад.

Ответы [ 2 ]

8 голосов
/ 14 ноября 2011

попробуйте это:

Resources res = getResources(); // Resource object to get Drawables   
tabHost = getTabHost();  // The activity TabHost  
TabHost.TabSpec spec;  // Resusable TabSpec for each tab    
Intent intent;  // Reusable Intent for each tab   

intent = new Intent().setClass(this, First.class);      
spec = tabHost.newTabSpec("First Tab").setIndicator("First Tab",res.getDrawable(R.drawable.icon)).setContent(intent); 
tabHost.addTab(spec);   

intent = new Intent().setClass(this, Second.class); 
spec = tabHost.newTabSpec("Second Tab").setIndicator("Second Tab",res.getDrawable(R.drawable.icon)).setContent(intent); 
tabHost.addTab(spec); 

tabHost.setCurrentTab(1);

и убедитесь, что ваша активность должна быть TabActivity, где вы определяете свой TabHost.

4 голосов
/ 28 апреля 2012

Более ясный и точный ответ заключается в том, что вы не вызвали метод setIndicator для объекта TabHost.TabSpec, поэтому если вы добавите этот вызов к каждому объекту спецификации вкладки, ваша проблема будет решена.

spec.setIndicator ("Tab 1");

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