Android自定义标签链接到活动

时间:2010-12-20 20:39:24

标签: android tabs android-activity

我如何获得下面的课程来创建链接到活动的标签。它的工作方式,但标签不与任何活动相关联。我需要标签来加载不同的活动吗?

import android.app.TabActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;
import android.widget.TabHost.TabContentFactory;

public class CustomTabActivity extends TabActivity {
    TabHost mTabHost = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mTabHost = (TabHost) findViewById(android.R.id.tabhost);
        // 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");
    }

    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;
    }
}

1 个答案:

答案 0 :(得分:0)

  

我需要将setConent设置为Activities而不是Views

不,你没有。通过填充活动标签,您什么都得不到。事实上,这样做会带来更多弊大于利 - 浪费堆空间,堆栈空间和CPU时间而没有附加价值。

现在,如果您不想要,则不必在运行时定义选项卡内容。例如,here is a sample project以与TabHost本身相同的布局定义标签内容。