0

我一直在阅读很多关于如何在setContent使用选项卡时使用视图而不是意图更轻量级的评论。

由于我将创建一个带有选项卡的应用程序,因此我试图实现这一点,而不是在setContent. 但是,我很难寻找将当前视图与另一个视图交换的示例或简单教程。

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

编辑:我有一个名为 TAB_A 的选项卡,其中有一个按钮。如果用户单击该按钮,TAB_A 现在将显示“你好,用户!” 而不是按钮。

这是我的 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);

WhereShowButtonShowHelloare 类都在扩展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。

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

一如既往的感谢!

4

1 回答 1

1

找到了答案:

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

mView选项卡中的初始视图在哪里。现在只是想弄清楚如何让应用程序记住mView在新视图中按下 BACK 时显示。

于 2010-08-20T18:16:44.450 回答