需要返回按钮返回当前位于

时间:2018-03-16 14:00:55

标签: android android-fragments android-tabhost back-button

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

.addToBackStack("tag")
在片段管理器事务中

以获得此影响。

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

.addToBackStack(host.getCurrentTabTag())

但这仍然让我回到“标签1”。想知道是否有办法轻松做到这一点。

如有需要,可以提供更多代码,谢谢。

编辑。

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

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

1 个答案:

答案 0 :(得分:0)

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

首次加载 - 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);

然后我终于在Tab Changed Listener中将tabTag更改为当前tabTag。这允许tabTag String变量允许跟上当前标记。

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

因此,无论何时单击后退按钮,它都将运行onCreateView方法并通过标记设置主机,该标记在首次运行时将始终为活动标记,但之后它将是最后打开的选项卡。< / p>