Изменить содержимое вкладки при нажатии кнопки - PullRequest
0 голосов
/ 20 августа 2010

Я читал много комментариев о том, как более просто использовать представления вместо намерений в setContent при использовании вкладок.

Поскольку я буду создавать приложение с вкладками, я пытаюсьреализовать это вместо того, чтобы иметь намерения внутри setContent.Однако мне трудно найти примеры или простые уроки по замене текущего представления на другое.

Скажем, у меня есть TAB_A, с некоторыми полями ввода и кнопкой.Когда пользователь нажимает на кнопку, TextView будет отображать «Привет, пользователь!»в том же 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);

Где 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?

Спасибо как всегда!

1 Ответ

1 голос
/ 20 августа 2010

Найден ответ:

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

Где mView - начальный вид на вкладке.Теперь просто пытаюсь понять, как заставить приложение не забывать показывать mView при нажатии НАЗАД из нового представления.

...