Как уменьшить количество вкладок в TabLayout (каждый раз сталкиваясь с ошибкой) - PullRequest
0 голосов
/ 11 июля 2020

У меня есть макет вкладок с 4 вкладками:

 private final String[] TITLE = {"NEAR BY", "GLOBAL", "ROOM", "PRIVATE"};

Мне не нужна вкладка «GLOBAL» в TabLayout, поэтому я удалил ее из массива заголовков, так что теперь она выглядит так :

  private final String[] TITLE = {"NEAR BY", "ROOM", "PRIVATE"};

Но каждый раз, когда я снова запускаю приложение, я получаю эту ошибку:

Вызвано: java .lang.ArrayIndexOutOfBoundsException: length = 3; index = 3

Вот мой код активности:

  public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        Log.i(TAG, "Create fragment position: " + position);
        switch (position) {
            case 0:
                return new NearbyFriendsFragment();
            case 1:
                GlobalFragment globalFragment = new GlobalFragment();
                setListener(globalFragment);
                return globalFragment;
            case 2:
                return new RoomFragment();
            default:
                return new PrivateFragment();
        }
    }

    @Override
    public int getCount() {
        return 4;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        Log.i(TAG, "Get page title: " + position);
        return TITLE[position];
    }
}
  @Override
public void onTabUpdate(int position, int countBadge) {
    Log.i(TAG, "On Tab update: " + position + " , Count Badge: " + countBadge);
    arrayCountBadge[position] = countBadge;
    customTabView(position, countBadge);
}

Я новичок в разработке Android.

Ответы [ 2 ]

1 голос
/ 11 июля 2020

ваша функция getCount возвращает 4, а размер массива всего 3 попытки:

@Override
public int getCount() {
    return 3;
}
0 голосов
/ 11 июля 2020

Вот полный код

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

    int noOfItems;

    public SectionsPagerAdapter(FragmentManager FM,int itemCount) {
        super(fm);
        this.noOfItems=itemCount;
    }

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        Log.i(TAG, "Create fragment position: " + position);
        switch (position) {
            case 0:
                return new NearbyFriendsFragment();
            case 1:
                 return new RoomFragment();
            case 2:
                GlobalFragment globalFragment = new GlobalFragment();
                setListener(globalFragment);
                return globalFragment;
            default:
                return new PrivateFragment();
        }
    }

    @Override
    public int getCount() {
        return noOfItems;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        Log.i(TAG, "Get page title: " + position);
        return TITLE[position];
    }
}
  @Override
public void onTabUpdate(int position, int countBadge) {
    Log.i(TAG, "On Tab update: " + position + " , Count Badge: " + countBadge);
    arrayCountBadge[position] = countBadge;
    customTabView(position, countBadge);
}

Таким образом, размер (или количество предметов) будет обновляться автоматически. Надеюсь это поможет. Не стесняйтесь обращаться за разъяснениями ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...