我已经在选项卡主机中实现了活动组。有 4 个活动组。在每个活动组的每个第一个活动中,我都有一个后退按钮。我面临一个问题。假设我有 4 个活动组,比如 A、B、C、D。现在当应用程序启动时,那时活动组 A 将在那里,当我从 A->B 切换而不是从 B->C 切换时,现在我在名为 C 的活动组中。现在当我单击活动组的返回按钮时一个C.在那个时候,标签主机的当前标签应该是我已经导航到C的上一个标签主机。是否有任何标准方法可以做到这一点,或者我们需要按照我们的逻辑放置?
谢谢
我已经在选项卡主机中实现了活动组。有 4 个活动组。在每个活动组的每个第一个活动中,我都有一个后退按钮。我面临一个问题。假设我有 4 个活动组,比如 A、B、C、D。现在当应用程序启动时,那时活动组 A 将在那里,当我从 A->B 切换而不是从 B->C 切换时,现在我在名为 C 的活动组中。现在当我单击活动组的返回按钮时一个C.在那个时候,标签主机的当前标签应该是我已经导航到C的上一个标签主机。是否有任何标准方法可以做到这一点,或者我们需要按照我们的逻辑放置?
谢谢
没有标准的方法可以做到这一点,但话又说回来,任何事情都是有可能的!我在早期的应用程序中遇到了类似的问题。我通过维护一堆最后打开的选项卡来解决它,然后覆盖按下的后退按钮以从堆栈中删除选项卡。下面给出了一些示例代码。
初始化变量如下
tabIdStack = new Stack<Integer>();
openedTab = 0;
然后覆盖onTabChanged()
@Override
public void onTabChanged(String tabId) {
if (!backButtonPressed) {
if (tabIdStack != null) {
if (tabIdStack.size() == noOfTabs)
tabIdStack.remove(0);
tabIdStack.push(openedTab);
openedTab = tabHost.getCurrentTab();
}
}
backButtonPressed = false;
然后你也应该覆盖onBackPressed()
@Override
public void onBackPressed()
{
backButtonPressed = true;
if (tabIdStack.size() == 0)
this.finish();
else {
tabHost.setCurrentTab(tabIdStack.get(tabIdStack.size() - 1));
tabIdStack.remove(tabIdStack.size() - 1);
}
}