2016-09-14 2 views
0

이 활동에서 onCreate에안드로이드 - 제거 탭 및 TabFragment

final TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
tabLayout.addTab(tabLayout.newTab().setText("A")); 
tabLayout.addTab(tabLayout.newTab().setText("B")); 
tabLayout.addTab(tabLayout.newTab().setText("C")); 

final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
TabFragmentPagerAdapter adapter = new TabFragmentPagerAdapter(getSupportFragmentManager(),tabLayout.getTabCount()); 
viewPager.setAdapter(adapter); 

어댑터 대 내가 tabLayout.removeTabAt(1)를 사용하여 탭을 제거 할 수 있지만 내가 어떻게 위치 1에서 조각을 제거 할 수 있어요

public class TabFragmentPagerAdapter extends FragmentStatePagerAdapter { 

    private int numberOfTabs; 

    public TabFragmentPagerAdapter(FragmentManager fm, int numberOfTabs) { 
    super(fm); 
    this.numberOfTabs = numberOfTabs; 
    } 

    @Override 
    public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      FragmentA a = new FragmentA();   
      return a; 
     case 1: 
      FragmentB b = new FragmentB(); 
      return b; 
     case 2: 
      FragmentA c = new FragmentC(); 
      return c; 
     default: 
      return null; 
    } 
    } 

    @Override 
    public int getCount() { 
    return numberOfTabs; 

    } 
} 

?

답변

0

어댑터에서도 페이지를 제거해야합니다. 코드 아래

시도 :

public void removeTab(int position) { 
    if (mTabLayout.getTabCount() >= 1 && position<mTabLayout.getTabCount()) { 
     mTabLayout.removeTabAt(position); 
     mPagerAdapter.removeTabPage(position); 
    } 
} 

//This code will go in the adapter 
public void removeTabPage(int position) { 
     numberOfTabs = numberOfTabs - 1; 
     notifyDataSetChanged(); 
} 

notifyDataSetChanged();이 매우 중요하다 우리가 항목을 제거 어댑터를 알려줄.

+0

무엇이 tabItems입니까? – Coder

+0

당신의 arraylist –

+0

나는 그것을 가지고 있지 않습니다. Arraylist?의? – Coder

0

효과가있는 유일한 해결책은 각 탭에 조각 모음의 배열 목록을 추가하고 탭과 조각을 동적으로 제거하는 것입니다.

private ArrayList<Fragment> fragments; 

@Override 
    public Fragment getItem(int position) { 
     if (position == 0) 
      return fragments.get(position); 
     if (position == 1) 
      return fragments.get(position); 
     if (position == 2) 
      return fragments.get(position); 
     return null; 
    } 

@Override 
    public int getCount() { 
     return fragments.size(); 
    } 


    public void removeTabPage(int position) { 
     if (!fragments.isEmpty() && position<fragments.size()) { 
      fragments.remove(position); 
      notifyDataSetChanged(); 
     } 
    }