2015-06-18 3 views
0

Я создал приложение в android, используя PagerSlidingTabStrip.Как удалить вкладки с помощью PagerSlidingTabStrip?

Я создал вкладки с помощью адаптера и фрагментов.

Когда я попытался удалить вид, используя

viewPager.removeView(getView()); 
adapter.notifyDataSetChanged(); 

мнение скрыто, но приложение показывает мне пустой вид и название вкладки упорствовать.

+0

Это потребует, чтобы методы getItem, 'getCount' и' getPageTitle' вашего адаптера динамически возвращали правильное значение на основе того, какие вкладки были удалены. – tachyonflux

+0

Спасибо @karaokyo Я предполагал, что, но у меня нет идеи, как это сделать. Можете ли вы показать мне пример, пожалуйста? –

ответ

0

Я не проверял, но это было бы что-то вдоль линий:

public class SectionsPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragments = new ArrayList<>(); 
    private final List<String> mFragmentTitles = new ArrayList<>(); 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragments.add(fragment); 
     mFragmentTitles.add(title); 
    } 

    public void removeFragment(int position) { 
     mFragments.remove(position); 
     mFragmentTitles.remove(position); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragments.get(position); 
    } 

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

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentsTitles.get(position) 
    } 
} 
+0

Здравствуйте, спасибо за ваш ответ. Я попытался решить мою проблему, и удалил мне заголовок табуляции, но не удалял меня, это сохранялось на экране, но удаляло мне последний фрагмент. –

+0

Наконец, я решил проблему, используя «FragmentStatePageAdapter'instead a FragmentPagerAdapter» и используя это для обновления экрана: 'viewPager.setAdapter (null); adapter.removeFragment (позиция); viewPager.setAdapter (адаптер); ' ' –

+0

Не могли бы вы разместить свое полное решение в качестве ответа и вкратце объяснить, почему вам пришлось использовать FragmentStatePageAdapter вместо FragmentPagerAdapter? У меня такая же проблема с PagerSlidingTabStrip. –

0

я, наконец, понял это, как это сделать

@Override 
public int getItemPosition(Object object) 
{ 
    int index = fragments.indexOf(object); 
    if (index == -1) 
     return POSITION_NONE; 
    else 
     return index; 
} 

это рабочий код! !!

Смежные вопросы