从一个片段移动到另一个片段时,如何自动选择底部导航?
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
中设置它来更改 ViewPager
的 Fragment
并且 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 中应用它,它解决了我上面的问题。
我正在尝试制作操作按钮以从主页片段移动到促销片段。
在片段主页中有一个操作按钮,可以移动到促销片段。但是,当单击主页片段上的促销操作按钮时,显示将移动到促销片段,但主页片段中的底部导航仍处于选中状态。
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
中设置它来更改 ViewPager
的 Fragment
并且 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 中应用它,它解决了我上面的问题。