Ich habe eine ViewPager
mit zwei Seiten, wie kann ich einen von Fragment
von ViewPager
entfernen und einen weiteren Fragment
zu ViewPager
hinzufügen?Android - Entfernen, dann Fragment von ViewPager hinzufügen?
ich Code unten geschrieben, funktioniert aber nicht:
public class MainActivity extends AppCompatActivity implements WorkTableFragment.listenerLogin {
@BindView(R.id.tabsMainActivity)
TabLayout tabsMainActivity;
@BindView(R.id.viewpagerMainActivity)
ViewPager viewPagerMainActivity;
private ViewPagerAdapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
setupViewPager(viewPagerMainActivity);
}
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new WorkTableFragment(), getString(R.string.workTable));
adapter.addFragment(MouFragment.newInstance(langID, lang), getString(R.string.mou));
viewPager.setAdapter(adapter);
tabsMainActivity.setupWithViewPager(viewPager);
viewPager.setCurrentItem(1);
}
@Override
public void isLogin(LoginModel result) {
int position = viewPagerMainActivity.getCurrentItem();
adapter.addRemoveFragment(new LoggedInFragment(), getString(R.string.workTable), position);
adapter.notifyDataSetChanged();
}
private class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
void addRemoveFragment(Fragment fragment, String title, int index) {
mFragmentList.remove(index);
mFragmentTitleList.remove(index);
mFragmentList.add(index, fragment);
mFragmentTitleList.add(title);
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
}
Hier muss ich einen anderen Fragment
eine bestimmte Fragment
und fügen Sie entfernen.
@Override
public void isLogin(LoginModel result) {
int position = viewPagerMainActivity.getCurrentItem();
adapter.addRemoveFragment(new LoggedInFragment(), getString(R.string.workTable), position);
adapter.notifyDataSetChanged();
}
Hier muss ich WorkTableFragment
von Position entfernen 0 und fügen LoggedInFragment
in Position 0.
Versuchen Sie, 'notifyDataSetChanged()' aus der Methode 'addRemoveFragment' aufzurufen, nachdem Sie das Fragment – Ricardo
hinzugefügt haben. Sie können ein BridgeFragment (fügen Sie es im Adapter von viewpager), das nur ein frameLayout enthält, durch das Fragment ersetzen dass Sie wollen –
Bitte führen Sie mehr und schreiben Sie Beispielcode. Vielen Dank . –