(我知道活动组和标签已被弃用。目前我无法重新设计我的应用程序,所以我希望尽可能使用当前设计完成它。)
我有一个TabActivity,有三个选项卡,A,B和C.Tab C是一个ActivityGroup,有两个子活动,C1和C2。始终从C1调用C2并通过设置C1视图并重新启动C1意图来解除C2。这一切都很好。我的问题是,如果用户在C2活动中选择A或B选项卡,我希望C2活动取消。下次选择C选项卡时,应显示C1活动。如果用户退出应用程序并重新输入,则相同。
我已经实现了OnTabChangeListener(),因此我知道何时选择了一个新选项卡,我甚至可以判断C2选项卡是否处于活动状态(或者是否在选项卡更改之前)。我的问题是如何取消C2活动,以便在选择C选项卡时,启动默认的C1活动,而不是返回先前激活的C2选项卡。
答案 0 :(得分:1)
我认为你可以为此目的使用广播发送者和接收者。在暂停中创建一个广播接收器。我建议这样做,因为如果你想从任何其他地方完成c2,那么你可以通过发送广播轻松完成。使用此代码:
BroadcastReceiver broadcast_receiver = null; // DECLARE IT IN YOUR CLASS.
// WRITE BELOW CODE IN onPause OF C2 ACTIVITY.
broadcast_receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("finish_c2")) {
unregisterReceiver(broadcast_receiver);
finish();
}
}
};
registerReceiver(broadcast_receiver, new IntentFilter("finish_c2"));
要完成您的活动,只需从任何地方发送广播。
//WRITE THE BELOW CODE WHERE YOU WANT TO FINISH C2 ACTIVITY.
Intent intent = new Intent("finish_c2");
sendBroadcast(intent);
希望它可以帮助您询问是否出现任何问题。
答案 1 :(得分:0)
只需在Tab C中使用onPause()并使用与从c2回到c1时使用的相同代码覆盖它。由于只有当您离开该特定标签时才会调用onPause()
,因此您的活动组将在后台恢复,当您返回到标签C时,您可以在第一个位置看到您的C1。