Выбор элемента вкладки программно - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь программно установить выбор вкладки для моего tabLayout.Я продолжаю получать null pointer.

 firebaseFirestore.collection("Categories")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                Log.d(TAG, document.getString("title") + " => " + document.getData());
                                tabLayout.addTab(tabLayout.newTab().setText(document.getString("title")));
                                tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
                                tabLayout.getTabAt(5).select();
                                final CategoriesPagerAdapter categoriesPagerAdapter = new CategoriesPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
                                viewPager.setAdapter(categoriesPagerAdapter);
                            }
                        } else {
                            Log.d(TAG, "Error getting documents: ", task.getException());
                        }
                    }
                });

Почему getTabAt(5).select продолжает возвращать ноль?

1 Ответ

0 голосов
/ 30 апреля 2019

Проблема в том, что вы пытаетесь выбрать вкладку, которая не была добавлена ​​в TabLayout.Вы вызываете это ...

tabLayout.getTabAt(5).select();

после этого ...

tabLayout.addTab(tabLayout.newTab().setText(document.getString("title")));

попробуйте перевести вызов на select из цикла for.Также имейте в виду, что в документации явно говорится следующее о методе select ...

Выберите эту вкладку.Действителен, только если вкладка была добавлена ​​на панель действий.

Таким образом, если TabLayout не был добавлен на панель действий, он ничего не будет делать.

Другойпроблема заключается в том, что вы заново создаете и настраиваете адаптер ViewPager на каждой итерации цикла for.

Мой совет, пожалуйста, прекратите работу над этим приложением, пока не убедитесь, что делаете.В опубликованном вами фрагменте кода имеется более одной явной ошибки

...