Закрытие вкладки Android в tabHost

Я разрабатываю приложение для чата с использованием Android. Программно теперь я могу добавить вкладку без необходимости. Но проблема в том, что я не могу закрыть ни одну вкладку. tabhost.clearAllTabs закрывает все вкладки. Я хочу закрыть определенную вкладку, когда другой пользователь покинул окно чата. Можно ли использовать табхост? хотя нет прямого способа закрыть вкладку, есть ли косвенный способ закрыть вкладку?

Спасибо.

Обновлять:

TabHost tabHost;
public class TActivity extends TabActivity {

    tabHost = getTabHost();                 
}

public void addTAb(){

        TabSpec tabSpec = tabHost.newTabSpec("counter:"+counter);    

        View tab = LayoutInflater.from(getTabHost().getContext()).inflate(R.layout.tab, null);              
        tabSpec.setIndicator(tab);          
        Intent tabIntent = new Intent(this, Foo.class);
        tabSpec.setContent(tabIntent);  

        tabHost.addTab(tabSpec);        

        tabHost.setCurrentTabByTag(--);
        tabCounter = tabCounter +1;
}

person userx    schedule 21.12.2013    source источник


Ответы (2)


Вы пробовали что-то вроде этого кода:

myTabhost.getTabWidget()
    .removeView(myTabhost.getTabWidget()
    .getChildTabViewAt(myTab)); // myTab is the one you want to close  

Я видел это по этому вопросу: Программно закрыть вкладку TabHost

Надеюсь, вы получите ожидаемый результат.

person fllo    schedule 21.12.2013
comment
друг, не работает. Куда мне вставить этот код, в «tabActivity» или «Intent Activity». Также я использую пользовательский виджет вкладок. Я поместил туда небольшое изображение «кнопки закрытия». Когда кто-то нажимает на это представление, можно ли закрыть вкладку? & Как отличить эту «кнопку закрытия» для каждой вкладки для привязки? - person userx; 22.12.2013
comment
Я думаю, вы должны вставить это в TabActivity. И да, я думаю, вы можете использовать метод OnClickListener. Но можете ли вы опубликовать класс TabActivity, код, который вам нужен, чтобы найти подходящее решение? - person fllo; 22.12.2013
comment
действительно спасибо за проявленный интерес. Теперь моя проблема решена. На самом деле я очень занят, поэтому я не разместил здесь решение. Скоро выложу здесь. - person userx; 24.12.2013

Чтобы закрыть вкладку, я сделал следующий трюк, и, наконец, он работает.

Во-первых, я установил одну вкладку по умолчанию и локально сохраняю список всех новых вкладок.

//local list
private LinkedList<String> tabList = new LinkedList<String>();  
//adding tab
TabSpec tabSpec = tabHost.newTabSpec(tab_id);   
tabHost.addTab(tabSpec);
//making local entry
tabsList.add(tab_id);   

Затем, используя следующий код, я удаляю определенную вкладку,

tabHost.getTabWidget().getChildTabViewAt(tabHost.getCurrentTab()).setVisibility(View.GONE);

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

String tabid = tabList.getLast();     
tabHost.setCurrentTabByTag(tabid);

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

Я надеюсь, что это может быть полезно и вам, ребята.

Если кто-то нашел лучший способ, сообщите нам об этом.

Спасибо.

person userx    schedule 17.04.2014