我有一个稍微不同的问题,我想我会为其他面临类似情况的人添加这个。我有一个基于活动的选项卡应用程序,其中一个选项卡活动启动另一个不受选项卡宿主控制的活动。我需要在activity finish()上有一个按钮(即:返回主选项卡视图)并同时切换到其他选项卡。
我决定用广播接收器来处理。在设置tabhost的类中,我添加了以下类:
class ChangeTabReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "ChangeTabReceiver: received");
TabHost tabHost = getTabHost();
tabHost.setCurrentTab(1);
}
}
…然后定义变量:
ChangeTabReceiver changeTabReceiver;
IntentFilter changeTabFilter;
…然后添加到oncreate():
changeTabReceiver = new ChangeTabReceiver();
changeTabFilter = new IntentFilter(myApplication.CHANGE_TAB);
registerReceiver(changeTabReceiver, changeTabFilter);
最后,在新活动中,如果要关闭该活动并切换选项卡,请执行以下操作:
Intent intent = new Intent(myApplication.CHANGE_TAB);
this.sendBroadcast(intent);
this.finish();
当然,您可以通过传递选项卡索引来创建一个切换到不同选项卡的方法——但在我的例子中,这种行为只发生在一个活动中,所以我决定保持它的简单性……