Android Затваряне на раздела в tabHost

Разработвам приложение за чат с помощта на android. Програмно сега мога да добавя нито един раздел според необходимостта. Но проблемът е, че не мога да затворя нито един раздел. tabhost.clearAllTabs затваря всички раздели. Искам да затворя определен раздел, когато друг потребител напусне прозореца за чат. Възможно ли е да се използва tabhost? въпреки че няма директен начин за затваряне на раздел, има ли някакъв индиректен начин за затваряне на раздел?

Благодаря ти.

Актуализация:

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