1

(我知道活动组和选项卡已被弃用。我目前无法重新设计我的应用程序,所以如果可能的话,我想用当前的设计完成它。)

我有一个带有三个选项卡 A、B 和 C 的 TabActivity。Tab C 是一个带有两个子活动 C1 和 C2 的 ActivityGroup。C2 总是从 C1 调用并通过设置 C1 视图并重新启动 C1 意图来解除。这一切都很好。我的问题是,如果用户在 C2 活动中选择 A 或 B 选项卡,我希望 C2 活动取消。下次选择 C ​​选项卡时,应显示 C1 活动。如果用户退出应用程序并重新进入它,同样的事情。

我已经实现了 OnTabChangeListener(),所以我知道何时选择了新选项卡,我什至可以判断 C2 选项卡是否处于活动状态(或者在选项卡更改之前)。我的问题是如何取消 C2 活动,以便在选择 C ​​选项卡时,启动默认 C1 活动,而不是返回到先前活动的 C2 选项卡。

4

2 回答 2

1

我认为您可以为此目的使用广播发送方和接收方。在 onpause 创建一个广播接收器。我建议这样做是因为如果您也想从任何其他地方完成 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);

希望它会帮助您询问是否出现任何问题。

于 2012-05-15T05:36:47.483 回答
0

只需在 Tab C 中使用 onPause() 并使用与从 c2 回到 c1 相同的代码覆盖它。由于onPause()只会在您退出该特定选项卡时调用,因此您的活动组将在后台恢复,当您返回该选项卡 C 时,您可以首先看到您的 C1。

于 2012-05-15T05:25:00.870 回答