arraylist로 프래그먼트가있는 프로그램이 있습니다. TabLayout과 함께 사용하고 있습니다. 탭을 제거하면 조각도 제거하려고합니다. 하지만 내 구현에서는 순차적이지 않습니다. 탭 1은 Fragment2 등을 제거합니다. 내가 잘못 가고 있는지 확인하십시오.arraylist에서 조각을 제거 할 수 없습니다
는 MainActivity의에서 onCreate에서이 나는 조각을
private TabPagerAdapter pagerAdapter;
public List<Fragment> fragmentList = new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
fragmentList.add(NewsFragment.newInstance(Tab1));
fragmentList.add(NewsFragment.newInstance(Tab2));
fragmentList.add(NewsFragment.newInstance(Tab3));
mViewPager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), fragmentList);
mViewPager.setAdapter(pagerAdapter);
이 내 FragmentStatePagerAdapter입니다 removeFragment 내가 mainactivity이 어디에서 조각을
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);
}
}
}
으로 onActivity 결과를 제거하기 위해 노력하고있는 곳입니다 추가하는 방법입니다 I 탭을 모두 제거하려고 시도 중입니다 & 조각
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK || data == null)
return;
settingList = (ArrayList<SettingCheckBox>) data.getSerializableExtra(SETTING_CHECK_BOX);
for (int i = 0; i < settingList.size(); i++) {
if (settingList.get(i).getChecked()) {
Log.d("**Checked Item**", String.valueOf(settingList.get(i).getDescription()));
String removeTab = String.valueOf(settingList.get(i).getDescription());
Boolean checkedValue = settingList.get(i).getChecked();
if (removeTab.equals("tab1")) {
//remove tab
tabLayout.removeTab(tab1);
//remove fragment
pagerAdapter.removeFragment(0);
// fragmentList.remove(i);
pagerAdapter.notifyDataSetChanged();
} else if (removeTab.equals("tab2")) {
tabLayout.removeTab(tab2);
pagerAdapter.removeFragment(1);
// fragmentList.remove(i);
pagerAdapter.notifyDataSetChanged();
} else if (removeTab.equals("tab3")) {
tabLayout.removeTab(tab3);
pagerAdapter.removeFragment(2);
// fragmentList.remove(i);
pagerAdapter.notifyDataSetChanged();
}
예 그게 내 문제의 위치를 찾을 필요가
경우이 방법을 추가, 전에서 6 개 탭을 삭제하고 있다면 올바른 조각의 위치를 얻는 방법 한 번? 수정을 확인하십시오. – choman
correctFragmentPosition = removeTab의 값을 기반으로 계산하십시오, 논리에 따라 달라집니다 – NIPHIN
이 문제를 해결할 수 있습니까? 나는 노력했지만 몇 주 후 성공할 수 없다. – choman