How to allow user to Add and Delete Tabs in an android application

前端 未结 2 807

I am developing an application that uses tabs with each tab being linked to a webpage that the user will be able to see and interact with using webview. What I am having tro

相关标签:
2条回答
  • 2021-01-14 20:15

    You may use this way: 1- add every tabs to list array 2-to remove a spesific tab, first remove it from list and clear all tabs from tabHost and add them again from list.

    check this code which has basic idea of how to delete tabs from tabHost dynamically :

    // data structure, what I referred to as memory
    ArrayList<TabHost.TabSpec> list = new ArrayList<TabHost.TabSpec>();
    
    // when you are adding tabs to tab host
    // what you add, you remember
    TabHost.TabSpec spec = tabs.newTabSpec("tag1");
    spec.setContent(R.id.button);
    spec.setIndicator("TabONe");
    tabs.addTab(spec);
    list.add(spec);
    ...
    // when you want to remove
    list.remove(list.size()-1); // remove it from memory
    tabs.clearAllTabs();  // clear all tabs from the tabhost
    for(TabHost.TabSpec spec : list) // add all that you remember back
       tabs.addTab(spec);
    

    resource: http://www.coderanch.com/t/460859/Android/Mobile/TabHost-Remove-Tab

    I hope this will help.

    M.

    0 讨论(0)
  • 2021-01-14 20:18

    Using code mentioned by Mohammed can be useful, but you may need to add

    tabs.setCurrentTab(0);
    

    before calling

    tabs.clearAllTabs();
    

    according to issue described at http://code.google.com/p/android/issues/detail?id=2772. Then your tab probably gets removed, but you may notice an error when trying to switch or add tabs. For me, this problem was fixed after calling

    tabs.setCurrentTab(index);
    

    inside the for-loop (after adding the tab).

    So you should get:

    list.remove(nTabToRemoveIndex);
    tabs.setCurrentTab(0);   // <== ***FIRST EDIT***
    tabs.clearAllTabs();
    int nTabIndex = 0;       // <== ***SECOND EDIT***
    for(TabHost.TabSpec spec : list)
    {
      tabs.addTab(spec);
      tabs.setCurrentTab(nTabIndex++);   // <== ***THIRD EDIT***
    }
    

    Hope it will help.

    0 讨论(0)
提交回复
热议问题