从一个片段移动到另一个片段时如何自动选择底部导航?
Posted
技术标签:
【中文标题】从一个片段移动到另一个片段时如何自动选择底部导航?【英文标题】: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;
);
【问题讨论】:
【参考方案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);
);
【讨论】:
以上是关于从一个片段移动到另一个片段时如何自动选择底部导航?的主要内容,如果未能解决你的问题,请参考以下文章
想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉