簡體   English   中英

片段反向導航

[英]Fragment back navigation

我有一個AppCompatActivity

        Android.Support.V7.Widget.Toolbar myToolbar = (Android.Support.V7.Widget.Toolbar)FindViewById(Resource.Id.my_toolbar);
        SetSupportActionBar(myToolbar);
        SupportActionBar.SetDisplayHomeAsUpEnabled(true);

我在此活動中使用片段來更改工具欄下顯示的內容。 我希望將每個片段(在SupportFragmentManager.BeginTransaction().Replace(Resource.Id.content, myFragment).Commit() )推入堆棧,以便在工具欄上的后退按鈕觸摸或android后退按鈕按下時彈出並顯示。 怎么做?

我通過在活動中重寫OnOptionsItemSelected解決了這一問題:

    public override bool OnOptionsItemSelected(IMenuItem item)
    {
        if (SupportFragmentManager.BackStackEntryCount == 0)
        {
            return base.OnOptionsItemSelected(item);
        }

        SupportFragmentManager.PopBackStack();
        return true;
    }

注意:無需覆蓋OnBackPressed。

用這個 :

    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(containerId, fragment, fragment.getClass().getSimpleName());
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();

@Override
public void onBackPressed() { //or use on menu item clicked
    FragmentManager fragmentManager = getSupportFragmentManager();
    if (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStack();
    }else {
        super.onBackPressed();
    }
}

暫無
暫無

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

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