android选项卡intent,android – 从TabHost中删除选项卡及其中的活动(intent)

我有一个可以动态创建标签的应用程序.当我创建一个标签时,我会发起一个活动作为意图.像这样:

private void addTab(Context packageContext, Class> newClass, TabHost mTabHost, String tabId, String tabLabel){

// newClass is my Activity class that I want to start in the tab

Intent intent = new Intent().setClass(packageContext, newClass);

TabHost.TabSpec spec;

spec = mTabHost.newTabSpec(tabId).setIndicator(tabLabel)

.setContent(intent);

mTabHost.addTab(spec);

mTabHost.setCurrentTabByTag(tabId);

}

很标准.而且效果很好.现在,假设我在我的选项卡中实例化的活动中有一个按钮(或menuitem,无论如何).当用户按下此按钮时,我希望删除和销毁活动及其所在的选项卡.

我似乎无法找到一种简单的方法来做到这一点.我找到了TabHost.clearAllTabs()函数,但这会破坏所有标签和活动,我只想删除一个.

有人建议我保存我打开的所有Tabs的列表,然后调用clearAllTabs(),之后我重新创建除了我不想要的所有其他选项卡.

像这样的东西:

public static ArrayList list = new ArrayList();

我将此行添加到我的addTab()函数中,以便我创建的每个选项卡都记在我的ArrayList中:

list.add(spec);

然后,当我想删除我的标签时,我运行此功能:

public static void removeTab(){

list.remove(list.size()-1); // remove it from memory

mTabHost.clearAllTabs(); // clear all tabs from the tabhost

for(TabHost.TabSpec spec : list) // add all that you remember back

mTabHost.addTab(spec);

}

这将从我的ArrayList中删除我的选项卡,删除所有选项卡,然后使用我的ArrayList重新创建剩余的所有选项卡.理论上它应该工作,但当我尝试调用此函数时,我收到以下错误:

FATAL EXCEPTION: main

java.lang.NullPointerException

at android.widget.TabWidget.setCurrentTab(TabWidget.java:342)

at android.widget.TabWidget.focusCurrentTab(TabWidget.java:366)

at android.widget.TabHost.setCurrentTab(TabHost.java:323)

at android.widget.TabHost.addTab(TabHost.java:216)

at com.example.myapp.TabManager.removeTab(QuikBrowser.java:86)

at com.example.myapp.TabManager.TabWindow.onOptionsItemSelected(TabWindow.java:91)

at android.app.Activity.onMenuItemSelected(Activity.java:2205)

出于某种原因,在添加选项卡时,它会尝试设置当前选项卡,并且会遇到空指针异常.

如果你们可以提出另一种方法来实现我想要做的事情,或者一种方法来修复我当前的方法,我将不胜感激.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值