【发布时间】:2016-06-28 23:52:02
【问题描述】:
目前在主要活动下,我正在使用列表片段,并且正在动态创建它。基本上它运行的是同一个片段实例。
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener, TabsListener {
public List<Fragment> fragmentList = new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
fragmentList.add(NewsFragment.newInstance("https://www.yahoo.com"));
fragmentList.add(NewsFragment.newInstance("http://www.google.com/"));
fragmentList.add(NewsFragment.newInstance("http://www.stackoverflow.com/"));
fragmentList.add(NewsFragment.newInstance("http://www.2leep.com/"));
mViewPager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), fragmentList);
mViewPager.setAdapter(pagerAdapter);
在用户选择删除片段后,我希望能够将其从列表和屏幕中删除。我似乎无法弄清楚。 请检查活动结果。我也尝试设置静态数字,如
pagerAdapter.removeFragment(0); 但它只会在第一次工作然后列表似乎被重新排列并且数字与片段不匹配。我的问题很简单,我如何获得片段的位置?
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK || data == null)
switch (removeTab)
{
case "yahoo"
pagerAdapter.removeFragment(//how to get this position?);
case "google"
pagerAdapter.removeFragment(//how to get this position?);
case "stackoverflow"
pagerAdapter.removeFragment(//how to get this position?);
case "2leep"
pagerAdapter.removeFragment(//how to get this position?);
}
这是我的适配器
public class TabPagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> mFragmentList;
private List<String> tabTitles = new ArrayList<>();
@Override
public int getItemPosition(Object object) {
return PagerAdapter.POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
public TabPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
super(fm);
mFragmentList = fragmentList;
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void removeFragment(int tabPosition) {
if (!mFragmentList.isEmpty()) {
mFragmentList.remove(tabPosition);
}
}
}
【问题讨论】: