Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Установить иконку на tab - Android

13.07.2013, 17:22. Просмотров 1016. Ответов 4
Метки нет (Все метки)

Скажите как в коде ниже устанавливать иконки на каждую вкладку и затем вызвать нужную активность?

вот код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class CustomTabActivity extends Activity {
 
    private TabHost mTabHost;
 
    private void setupTabHost() {
        mTabHost = (TabHost) findViewById(android.R.id.tabhost);
        mTabHost.setup();
    }
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // construct the tabhost
        setContentView(R.layout.main);
 
        setupTabHost();
//      mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); //это полоска
 
        setupTab(new TextView(this), "Tab 1");
        setupTab(new TextView(this), "Tab 2");
        setupTab(new TextView(this), "Tab 3");
        setupTab(new TextView(this), "Tab 4");
        
        
    }
 
    private void setupTab(final View view, final String tag) {
        View tabview = createTabView(mTabHost.getContext(), tag);
 
        TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() {
            public View createTabContent(String tag) {return view;}
        });
        mTabHost.addTab(setContent);
 
    }
 
    private static View createTabView(final Context context, final String text) {
        View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
//      TextView tv = (TextView) view.findViewById(R.id.tabsText);
//      tv.setText(text);
        return view;
    }
}
Раньше когда использовал табы, то пользовался такой конструкцией:

Java
1
2
3
4
5
6
7
intent = new Intent().setClass(this, UserActivity.class);
        spec = tabHost
                .newTabSpec("tab1")
                .setIndicator("Вкладка",
                        res.getDrawable(R.drawable.profile))
                .setContent(intent);
        tabHost.addTab(spec);
но как применить это к коду который я привел?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2013, 17:22     Установить иконку на tab
Посмотрите здесь:

Tab вложенный в tab Android
Android Передача данных между tab Activities
Android Передача данных между tab Activities
Несколько Activity в одной вкладке TAB Android
tab - изменение внешнего вида Android
Tab Layout with Swipeable Views Android
Изменить иконку приложения Android
Android Убрать иконку из ActionBar
Android Как в TabWidget убрать Tab indicator?
Android ViewPager и Tab
Android Tab снизу экрана
Android Как можно в checkbox установить любую нужную мне иконку

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.07.2013, 18:17     Установить иконку на tab #2
добавьте картинку в tabs_bg лаяут.

Добавлено через 3 минуты
с активность все точно также, setContent(intent)

Добавлено через 49 секунд
а что мешает использовать нижнюю конструкцию если верхняя не устраивает?
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
13.07.2013, 18:45  [ТС]     Установить иконку на tab #3
Пытаюсь использовать так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
private TabHost tabHost;
    Intent intent;
 
    private void setupTabHost() {
        tabHost = (TabHost) findViewById(android.R.id.tabhost);
        TabWidget tabW = (TabWidget) findViewById(android.R.id.tabs);
 
        //tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);
        tabW.setStripEnabled(false);
 
 
        setupTab(new TextView(this), "tab1", getResources().getDrawable(R.drawable.tab1tabicon), new Intent().setClass(this, tab1Activity.class));
        setupTab(new TextView(this), "tab2", getResources().getDrawable(R.drawable.tab2tabicon), new Intent().setClass(this, tab2Activity.class));
        setupTab(new TextView(this), "tab3", getResources().getDrawable(R.drawable.tab3tabicon), new Intent().setClass(this, tab3Activity.class));
        setupTab(new TextView(this), "tab4", getResources().getDrawable(R.drawable.tab4tabicon), new Intent().setClass(this, tab4Activity.class));
        //setupTab(new ImageView(this), getResources().getDrawable(R.drawable.icon));
        tabHost.setCurrentTab(0);
 
        tabHost.setup();
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        setupTabHost();
 
    }
 
    private void setupTab(final View view, final String tag, Drawable drawable, final Intent i) {
        View tabview = createTabView(tabHost.getContext(), tag, drawable);
        TabSpec setContent = tabHost.newTabSpec(tag).setIndicator(tabview).setContent(i);
        tabHost.addTab(setContent);
    }
 
    private static View createTabView(final Context context, final String text, final Drawable icon) {
        final View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
        TextView tv = (TextView) view.findViewById(R.id.tabsText);
        tv.setText(text);
 
        ImageView bg_icon = (ImageView) view.findViewById(R.id.tab_bg);
        bg_icon.setImageDrawable(icon);
        return view;
    }
но приложение крашится и выдает:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
07-13 14:36:53.179: E/AndroidRuntime(630): FATAL EXCEPTION: main
07-13 14:36:53.179: E/AndroidRuntime(630): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.joshclemm.android.tabs/com.joshclemm.android.tabs.CustomTabActivity}: java.lang.NullPointerException
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.os.Looper.loop(Looper.java:123)
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.app.ActivityThread.main(ActivityThread.java:4627)
07-13 14:36:53.179: E/AndroidRuntime(630):  at java.lang.reflect.Method.invokeNative(Native Method)
07-13 14:36:53.179: E/AndroidRuntime(630):  at java.lang.reflect.Method.invoke(Method.java:521)
07-13 14:36:53.179: E/AndroidRuntime(630):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-13 14:36:53.179: E/AndroidRuntime(630):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-13 14:36:53.179: E/AndroidRuntime(630):  at dalvik.system.NativeStart.main(Native Method)
07-13 14:36:53.179: E/AndroidRuntime(630): Caused by: java.lang.NullPointerException
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.widget.TabHost.addTab(TabHost.java:207)
07-13 14:36:53.179: E/AndroidRuntime(630):  at com.joshclemm.android.tabs.CustomTabActivity.setupTab(CustomTabActivity.java:150)
07-13 14:36:53.179: E/AndroidRuntime(630):  at com.joshclemm.android.tabs.CustomTabActivity.setupTabHost(CustomTabActivity.java:123)
07-13 14:36:53.179: E/AndroidRuntime(630):  at com.joshclemm.android.tabs.CustomTabActivity.onCreate(CustomTabActivity.java:143)
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-13 14:36:53.179: E/AndroidRuntime(630):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-13 14:36:53.179: E/AndroidRuntime(630):  ... 11 more
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.07.2013, 19:39     Установить иконку на tab #4
с NullPointerException-ом никогда не сталкивались?
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
13.07.2013, 19:57  [ТС]     Установить иконку на tab #5
Цитата Сообщение от V0v1k Посмотреть сообщение
с NullPointerException-ом никогда не сталкивались?
сталкивался, так вот понять не могу - почему? вылетает на этой строчке
Java
1
tabHost.addTab(setContent);
Yandex
Объявления
13.07.2013, 19:57     Установить иконку на tab
Ответ Создать тему
Опции темы

Текущее время: 06:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru