单击按钮更改选项卡的内容

时间:2010-08-20 08:38:34

标签: android views tabs android-tabhost android-intent

在使用标签时,我一直在阅读很多关于如何使用视图而不是setContent中的意图的评论。

由于我将使用标签创建应用,因此我尝试实现此功能,而不是在setContent内进行意图。但是,我很难找到关于用另一个交换当前视图的示例或简单的教程。

说我有TAB_A,有一些输入字段和一个按钮。当用户点击按钮时,TextView将显示“Hello,user!”在同一个TAB_A中。当然这是一个过于简单的例子,但它肯定会指出我正确的方向。

编辑:我有一个名为TAB_A的标签,里面有一个按钮。如果用户点击该按钮,TAB_A现在将显示“Hello,user!”而不是按钮。

以下是我的TabSpec示例。

TabHost.TabSpec spec = tabHost.newTabSpec(getString(R.string.tabspec_tag_search))
                .setIndicator(getString(R.string.tabspec_indic_search),
                        res.getDrawable(R.drawable.tab_ic_search))
                .setContent(new TabContentFactory() {
                @Override
                public View createTabContent(String tag) {
                   switch (doWhat){
                    case ACTIVITY_SPLASH_PAGE:
                                       return showButton;
                    case ACTIVITY_HELLO:
                                       return showHello;
                   }
                       return null;
                }
            });
        tabHost.addTab(spec);

其中ShowButtonShowHello是扩展LinearLayout的类。两者都在onCreate中初始化,如下所示: ShowButton showButton = new ShowButton(this);

在showButton类中,我有这个监听器:

viewHolder.button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(context, Search247.class);
        intent.putExtra(EXTRA_DO_WHAT, ACTIVITY_HELLO);
        context.startActivity(intent);
    }
});

当应用首次启动时,用户会看到视图showButton。当用户点击按钮时,我希望标签将其内容更改为showHello。

问题是:有没有办法在不使用startActivity的情况下更新tabspec的内容?

一如既往地谢谢!

1 个答案:

答案 0 :(得分:1)

找到答案:

ViewGroup viewGroup = (ViewGroup) mView.getParent();
viewGroup.removeView(mView);
addView(showResults);

其中mView是标签中的初始视图。现在只想弄清楚当从新视图中按下BACK时如何让应用记住显示mView