Handling ActionBar title with the fragment back stack?

前端 未结 11 1503
挽巷
挽巷 2020-12-07 13:10

I have an Activity where I load in a ListFragment and, upon clicking, it drills down a level and a new type of ListFragment is shown,

11条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-07 13:55

    Let the controlling activity do all the work as follows:

    Listen for backstack events (in onCreate() of activity):

    // Change the title back when the fragment is changed
        getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
            @Override
            public void onBackStackChanged() {
                Fragment fragment = getFragment();
                setTitleFromFragment(fragment);
            }
        });
    

    Get the current fragment from the container:

    /**
     * Returns the currently displayed fragment.
     * @return
     *      Fragment or null.
     */
    private Fragment getFragment() {
        Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container);
        return fragment;
    }
    

    Set the fragment inside the content view:

    private void setFragment(Fragment fragment, boolean addToBackStack) {
        // Set the activity title
        setTitleFromFragment(fragment);
        .
        .
        .
    }
    

提交回复
热议问题