我利用fragment+ViewPager实现了底部导航栏功能,MainActivity布局是上面一个ViewPager,下面一个BottomNavigationView
我是参考https://blog.csdn.net/MrsZhang1995/article/details/111658786 做的底部导航栏
fragment是直接右击项目包-->New-->Fragment-->Fragment(Blank)创建的,四个fragment各有一个布局文件,所以我的fragment应该没有id。
现在我想从其他Activity点击按钮跳转MainActivity的第三个fragment,应该怎么写?
我的想法是跳转时给intent传一个int型值,0-3代表想跳转第0-3个fragment,但是不知道MainActivity怎么改
其他Activity设置跳转的代码:
Intent intent = new Intent(getBaseContext(), MainActivity.class);
intent.putExtra("id",3);
startActivity(intent);
MainActivity代码:不知道……处应该怎么写
public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener, ViewPager.OnPageChangeListener {
ViewPager viewPager;//用于展示不同的fragment
BottomNavigationView bottomNavigationView;//底部导航栏
HomeFragment homeFragment = new HomeFragment();//主界面
CommunityFragment communityFragment = new CommunityFragment();//社区
MallFragment mallFragment = new MallFragment();//商城
MineFragment mineFragment = new MineFragment();//我的
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化界面
int id = getIntent().getIntExtra("id",0);
switch(id) {
case 0://显示第0个fragment:HomeFragment
…………
break;
case 1://显示第1个fragment: CommunityFragment
…………
break;
case 2://显示第2个fragment:MallFragment
…………
break;
case 3://显示第3个fragment:MineFragment
…………
break;
}
}
private void init() {
//获取页面标签对象
viewPager = findViewById(R.id.viewPager);
viewPager.setOnPageChangeListener(this);//添加页面切换监视器
bottomNavigationView = findViewById(R.id.bottomNavigation);
bottomNavigationView.setOnNavigationItemSelectedListener(this);//添加导航栏选择监视器
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {//给页面添加适配器
@NonNull
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:return homeFragment;
case 1:return communityFragment;
case 2:return mallFragment;
case 3:return mineFragment;
}
return null;
}
@Override
public int getCount() {//界面个数
return 4;
}
});
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
@Override
public void onPageSelected(int position) {
bottomNavigationView.getMenu().getItem(position).setChecked(true);
}
@Override
public void onPageScrollStateChanged(int state) { }
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
viewPager.setCurrentItem(item.getOrder());
return true;
}
}