首页 > 解决方案 > 按下返回时如何更改片段的标题?

问题描述

我有 3 个片段,主页、菜单和订单,它们可以按bottomnavigtioview项目加载,并且一旦从主页导航到订单,它们也可以显示标题,然后如果你想从订单返回主页,标题仍然是“订单”

    public boolean onNavigationItemSelected(@NonNull MenuItem item) {

        Fragment fragment;

        switch (item.getItemId()) {
            case R.id.navigation_home:
                toolbar.setTitle(getResources().getString(R.string.title_home));
                fragment = new HomeFragment();
                loadFragment(fragment);
                return true;
            case R.id.navigation_menu:
                toolbar.setTitle(getResources().getString(R.string.fragment_title_menu));
                fragment = new ProductFragment();
                loadFragment(fragment);
                return true;
            case R.id.navigation_orders:
                toolbar.setTitle(getResources().getString(R.string.title_orders));
                fragment = new OrdersFragment();
                loadFragment(fragment);
                return true;
        }
        return false;
    }
};

private void loadFragment(Fragment fragment) {
    // load fragment
   FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
       transaction.replace(R.id.frame_container, fragment);
       transaction.addToBackStack(null);
       transaction.commit();
}

@覆盖

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    context = this;

     navigation =  findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);


    // attaching bottom sheet behaviour - hide / show on scroll
    CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) navigation.getLayoutParams();
    layoutParams.setBehavior(new BottomNavigationBehavior());

    toolbar.setTitle(getResources().getString(R.string.title_home));
    Fragment f = HomeFragment.newInstance();
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.frame_container, f)
            .commit();
}`

我也试过这个,但它不工作

`

fragmentmanger.addOnBackStackChangedListener -> public void onBackStackChanged() {

        }`

标签: androidfragmentonbackpressed

解决方案


onResume在每个片段中这样调用它时,它对我有用:

if(getActivity()!=null) { ((MainActivity)getActivity()).setActionBarTitle (context.getResources().getString(R.string.YOUR_TITLE)); 这是中的setActionBarTitle功能MainActivity

public void setActionBarTitle(String title) { toolbar.setTitle(title); }


推荐阅读