[英]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.