【问题标题】:How to make bottom navigation selected automatically when moving from one fragment to another?从一个片段移动到另一个片段时如何自动选择底部导航?
【发布时间】:2022-01-06 18:56:32
【问题描述】:

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

在片段主页中,有一个操作按钮将移动到促销片段。但是,当点击主页片段上的促销动作按钮时,显示将移动到促销片段,但在主页片段中仍然选择底部导航。

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

【问题讨论】:

    标签: android android-fragments bottomnavigationview


    【解决方案1】:

    我正在尝试使用我在 github 上找到的代码。下面是代码sn-p:

            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 中应用它,它解决了我上面的问题。

    【讨论】:

      【解决方案2】:

      您可以在您的setOnClickListener 中设置它来更改ViewPager 的Fragment 并且它是CurrentItem 来更改图标。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多