Android 在“ViewPager2”中重用“Fragment”`
我想在Android 在“ViewPager2”中重用“Fragment”`,android,mvvm,dagger-2,android-viewpager2,Android,Mvvm,Dagger 2,Android Viewpager2,我想在ViewPager2中使用两次带有不同参数的HomeFragment,但不幸的是,它总是显示一个参数 我认为这个问题是由于匕首造成的。请看一看 这是片段模块和main活动 碎片模块: @Module public abstract class FragmentModule { @ContributesAndroidInjector() abstract CategoryFragment contributeCategoryFragmen
ViewPager2
中使用两次带有不同参数的HomeFragment
,但不幸的是,它总是显示一个参数
我认为这个问题是由于匕首造成的。请看一看
这是片段
模块和main活动
碎片模块:
@Module
public abstract class FragmentModule {
@ContributesAndroidInjector()
abstract CategoryFragment contributeCategoryFragment();
@ContributesAndroidInjector()
abstract HomeFragment contributeHomeFragment();
}
public class MainActivity extends BaseActivity {
@BindView(R.id.viewPager)
ViewPager2 viewPager;
@BindView(R.id.bnv)
BottomNavigationView bnv;
@Override
protected int layoutRes() {
return R.layout.activity_main;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupViewPager();
listenerView();
// NavController navController = Navigation.findNavController(this, R.id.navHostFragment);
// NavigationUI.setupWithNavController(bnv , navController);
}
private void setupViewPager() {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), getLifecycle());
adapter.addFragment(HomeFragment.newInstance(Constants.APP));
adapter.addFragment(HomeFragment.newInstance(Constants.GAME));
adapter.addFragment(CategoryFragment.newInstance());
viewPager.setUserInputEnabled(false);
viewPager.setAdapter(adapter);
}
private void listenerView() {
bnv.setOnNavigationItemSelectedListener(
item -> {
switch (item.getItemId()) {
case R.id.nav_apps:
viewPager.setCurrentItem(0,false);
break;
case R.id.nav_games:
viewPager.setCurrentItem(1,false);
break;
case R.id.nav_category:
viewPager.setCurrentItem(2,false);
break;
}
return false;
});
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
switch (position) {
case 0:
bnv.getMenu().findItem(R.id.nav_apps).setChecked(true);
break;
case 1:
bnv.getMenu().findItem(R.id.nav_games).setChecked(true);
break;
case 2:
bnv.getMenu().findItem(R.id.nav_category).setChecked(true);
break;
}
}
});
}
main活动:
@Module
public abstract class FragmentModule {
@ContributesAndroidInjector()
abstract CategoryFragment contributeCategoryFragment();
@ContributesAndroidInjector()
abstract HomeFragment contributeHomeFragment();
}
public class MainActivity extends BaseActivity {
@BindView(R.id.viewPager)
ViewPager2 viewPager;
@BindView(R.id.bnv)
BottomNavigationView bnv;
@Override
protected int layoutRes() {
return R.layout.activity_main;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupViewPager();
listenerView();
// NavController navController = Navigation.findNavController(this, R.id.navHostFragment);
// NavigationUI.setupWithNavController(bnv , navController);
}
private void setupViewPager() {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), getLifecycle());
adapter.addFragment(HomeFragment.newInstance(Constants.APP));
adapter.addFragment(HomeFragment.newInstance(Constants.GAME));
adapter.addFragment(CategoryFragment.newInstance());
viewPager.setUserInputEnabled(false);
viewPager.setAdapter(adapter);
}
private void listenerView() {
bnv.setOnNavigationItemSelectedListener(
item -> {
switch (item.getItemId()) {
case R.id.nav_apps:
viewPager.setCurrentItem(0,false);
break;
case R.id.nav_games:
viewPager.setCurrentItem(1,false);
break;
case R.id.nav_category:
viewPager.setCurrentItem(2,false);
break;
}
return false;
});
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
switch (position) {
case 0:
bnv.getMenu().findItem(R.id.nav_apps).setChecked(true);
break;
case 1:
bnv.getMenu().findItem(R.id.nav_games).setChecked(true);
break;
case 2:
bnv.getMenu().findItem(R.id.nav_category).setChecked(true);
break;
}
}
});
}