0

setContentタブを使用するときにインテントの代わりにビューを使用する方が軽量であるというコメントをたくさん読んでいます。

タブ付きのアプリを作成するので、内部にインテントを含めるのではなく、これを実装しようとしていますsetContent。ただし、現在のビューを別のビューと交換するための例や簡単なチュートリアルを探すのに苦労しています。

いくつかの入力フィールドとボタンがあるTAB_Aがあるとします。ユーザーがボタンをクリックすると、TextView「こんにちは、ユーザー!」と表示されます。同じ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);

ここShowButtonで、およびShowHelloは両方とも拡張するクラス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 に答える