添加TabSpecs时出现TabHost错误

时间:2011-06-09 04:06:54

标签: android android-tabhost

编辑得有点清晰 所以...我必须误解如何正确使用TabHosts,因为我的代码在安装过程中完全崩溃,当我尝试添加一些TabSpecs时...我希望有一个视图,其中有一些UI界面,其中包含与其关联的图形和动画,然后是一个使用标签设置的菜单系统。我的代码看起来像是:

public void myView extends RelativeLayout {

    // Other Views ...
    private TabHost myTabHost;
    private ExpandableListView listView1; // content for tab 1
    private ExpandableListView listView2; // content for tab 2

    public myView(Context context) {
        super(context);

        // some other stuff
        myTabHost = new TabHost(context);
        myTabHost.setId(R.id.myTabHost);

        listView1 = new ExpandableListView(context);
        listView1.setId(R.id.myExpandableListView1);

        listView2 = new ExpandableListView(context);
        listView2.setId(R.id.myExpandableListView2);

        TabSpec tab1 = myTabHost.getTabSpec(res.getString(R.string.tab1));
        tab1.setIndicator(res.getString(R.string.tab1), res.getDrawable(R.drawable.tab1));
        tab1.setContent(R.id.myExpandableListView1); // *********
        myTabHost.addTab(tab1);

        // do something similar for tab2..
    }

}

这是我目前正在使用的活动..

public void myActivity extends Activity {

    @Override
    public void onCreate(Bundle savedState) {
        super.onCreate(savedState);

        // do a little stuff..

        TabHost myTabHost = (TabHost) findViewById(R.id.myTabHost); // not sure if I'm supposed to set up the tabs in my activity, or not..
        // I tried it after it crashing in the view, and it still crashed in the activity..
        ExpandableListView myListView1 = (ExpandableListView) findViewById(R.id.myExpandableListView1);
        // set up expandable list view the way I want from data sources..

        // do something similar for myListView2
    }

}

根据我的理解,我不想扩展TabActivity,因为这假设整个屏幕将成为一个巨大的TabHost,对吧?我只希望TabHost成为活动的一小部分...问题是系统崩溃了*********所指示的地方..我想我只是不明白如何去关于设置标签?有人可以告诉我正确的方法,或者可能会建议为什么它会崩溃?我想我也应该添加问题..使用TabHost,我是否必须使用TabActivity? (我不明白为什么我会这么做,但Android可以这么有趣......)

奖金 我正在四处寻找并找到关于没有tabactivities的tabhosts的stackoverflow链接。它们引用了LocalActivityManager。我将不得不阅读这个......

2 个答案:

答案 0 :(得分:0)

我很确定您需要Activity才能使用TabHost。此外,TabHost需要非常特定的布局才能使其正常工作,而您也没有。我相信你需要重新思考你的方法。

我很确定你看过this,但以防万一。

修改

可以从Activity(而不是TabActivity)扩展,并将标签小部件放在任何你想要的位置。但是,您必须在添加任何tabHostVariable.setup()之前致电TabSpecs

答案 1 :(得分:0)

您希望扩展TabActivity以正确执行此操作。查看http://developer.android.com/resources/tutorials/views/hello-tabwidget.html以获得精彩的教程。