如何在按回时更改片段标题?

问题描述 投票:0回答:2

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

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

        }`
android fragment onbackpressed
2个回答
0
投票

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


0
投票

它在每个片段中都像这样在onResume中调用时为我工作:

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

© www.soinside.com 2019 - 2024. All rights reserved.