返回时如何更改片段的标题?

How to change the title of fragment when press back?

我有 3 个片段,主页、菜单和订单,它们可以由 bottomnavigtioview 项加载,也可以显示标题 一旦从主页导航到订单,如果您想从订单返回主页,标题仍然是 "Orders"

    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();
}

@Override

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() {

        }`

不要在 onNavigationItemSelected 方法中调用 toolbar.setTitle,而是将其移动到每个片段的 onCreateView。当您导航回片段时,onCreateView 会再次执行。

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

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

中的函数 setActionBarTitle

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