从一个片段移动到另一个片段时,如何自动选择底部导航?

How to make bottom navigation selected automatically when moving from one fragment to another?

我正在尝试制作操作按钮以从主页片段移动到促销片段。

在片段主页中有一个操作按钮,可以移动到促销片段。但是,当单击主页片段上的促销操作按钮时,显示将移动到促销片段,但主页片段中的底部导航仍处于选中状态。

Screenshot Home Fragment

Screenshot Promo Fragment

这是我在 Home Fragment 中的操作按钮代码:

        imagePromo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ((MainActivity)getActivity()).selectFragment(2);
        }
    });

这是我在 MainActivity 中的 selectfragment 代码:

    public void selectFragment(int position){
    viewPager.setCurrentItem(position, true);
    viewPager.dispatchSetSelected(true);
}

这是我在 MainActivity 中的底部导航代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    view = findViewById(android.R.id.content);
    viewPager = findViewById(R.id.viewpager);
    viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
    viewPager.setOffscreenPageLimit(pager_number);
    navigation = findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(item -> {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                viewPager.setCurrentItem(0);
                return true;
            case R.id.navigation_category:
                viewPager.setCurrentItem(1);
                return true;
            case R.id.navigation_promo:
                viewPager.setCurrentItem(2);
                return true;
            case R.id.navigation_wishlist:
                viewPager.setCurrentItem(3);
                return true;
        }
        return false;
    });
}

您可以在 setOnClickListener 中设置它来更改 ViewPagerFragment 并且 CurrentItem 也可以更改图标。

   Button to_promo = view.findViewById(R.id.to_promo);
        to_promo.setOnClickListener(view1 -> {
            viewPager.setCurrentItem(2);
        });

我正在尝试使用我在 github 上找到的代码。以下是代码片段:

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }
        @Override
        public void onPageSelected(int position) {
            if (prevMenuItem != null) {
                prevMenuItem.setChecked(false);
            } else {
                navigation.getMenu().getItem(0).setChecked(false);
            }
            navigation.getMenu().getItem(position).setChecked(true);
            prevMenuItem = navigation.getMenu().getItem(position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

我尝试在 MainActivity 中应用它,它解决了我上面的问题。