簡體   English   中英

需要返回按鈕以返回到其當前位於的選項卡上的選項卡主機

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

我目前正在開發一個android應用,我希望后退按鈕返回到他們所在的上一頁。 當我使用片段時,我正在使用

.addToBackStack("tag")

在片段管理器事務中獲得這種影響。

但是,當我使用選項卡主機時遇到了問題。 一頁上有三個標簽。 已完成的工作,在職工作和投標中。 在“工作出價”頁面上,每個工作都有一個“查看詳細信息”按鈕。 我希望當他們從此頁面返回時,返回到帶有標簽托管的頁面,但轉到當前位於的標簽。 此刻,當我希望它轉到“選項卡2”時,該選項卡將返回到“選項卡1”,該選項卡是該選項卡上的按鈕以及它來自何處的“選項卡2”。 我嘗試使用

.addToBackStack(host.getCurrentTabTag())

但這仍然使我回到“選項卡1”。 想知道是否有一種方法可以輕松地做到這一點。

如有需要,可以提供更多代碼,謝謝。

編輯。

將其移至下一個片段的代碼。

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

解決了我的應用程序中的另一個問題之后,我終於回到了這個問題。 為了解決這個問題,我首先檢查了在打開頁面的不同點調用了哪些方法。 這是我的發現。

首次加載-1.創建時2.創建視圖時

在選項卡上已更改-1.在選項卡上已更改

普通頁面加載-1.在創建視圖上

然后,這給了我一個創建變量的想法,該變量可以檢查我在哪個選項卡上,然后允許它在頁面加載時知道我以前在哪個選項卡上。

我首先在頁面頂部創建了變量。

private String tabTag;

然后,在“創建方法”中將其設置為希望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 String變量允許與當前標簽保持同步。

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

因此,每當單擊后退按鈕時,它將運行onCreateView方法並通過標簽設置主機,該主機在首次運行時將始終是活動標簽,但之后將是最后打開的選項卡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM