需要后退按钮返回到当前所在选项卡上的选项卡主机

Need back button to go back to tab host on the tab it was currently on

我目前正在开发一个 android 应用程序,我希望后退按钮返回到他们所在的上一个页面。当我使用片段时,我正在使用

.addToBackStack("tag")

在片段管理器事务中获得此影响。

但是我在使用选项卡主机时遇到了问题。在一页上我有三个选项卡。已完成的工作、活跃的工作和工作投标。在“职位出价”页面上,每个职位都有一个查看详细信息按钮。我希望当他们从该页面返回时,它返回到选项卡主机打开的页面,但转到它当前所在的选项卡。目前它将返回到 "Tab 1",这是活动工作,当我希望它转到 "Tab 2" 时,这是选项卡上的工作出价,因为这是按钮所在的那个,它来自哪里.我尝试使用,

.addToBackStack(host.getCurrentTabTag())

但这仍然让我回到了 "Tab 1"。想知道是否有办法轻松做到这一点。

如有必要,可以根据要求提供更多代码,谢谢。

编辑。

将其移动到下一个片段的代码。

fragmentManager.beginTransaction().replace(R.id.content, bidDetailsFragment).addToBackStack("tag").commit();

在我的应用程序中解决了另一个问题后,我终于回到了这个问题。为了解决这个问题,我首先检查了在打开页面的不同点调用了哪些方法。这是我的发现。

首次加载 - 1. 创建 2. 创建视图

选项卡已更改 - 1.选项卡已更改

正常页面加载 - 1. 创建视图时

这让我想到了创建一个变量来检查我在哪个选项卡上,然后每当页面加载时,它就知道我之前在哪个选项卡上。

我首先在页面顶部创建了变量。

private String tabTag;

然后我在 On Create Method 中将其设置为我希望 tabHost 启动的默认值。

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    tabTag = "Active";

    if (getArguments() != null)
    {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }
}

然后我输入一行代码,通过标签设置选项卡主机,这将允许每次调用 onCreateView 方法时,它会将选项卡设置为任何标签。

host.setCurrentTabByTag(tabTag);

然后我终于在 on Tab Changed Listener 内部将 tabTag 更改为当前的 tabTag。这允许 tabTag 字符串变量跟上当前标签。

host.setOnTabChangedListener(new TabHost.OnTabChangeListener()
    {
        @Override
        public void onTabChanged(String tabId)
        {
            tabTag = host.getCurrentTabTag();
        }
    });

因此,每当单击后退按钮时,它都会 运行 onCreateView 方法并通过标签设置主机,首先 运行 将始终是活动标签,但之后它将是最后打开的标签页。