Какой метод вызывается при прокрутке внутри вкладки? [Дубликат]

Вы также можете сделать это дополнительно

import re
string='24234ww'
val = re.search('[a-zA-Z]+',string) 
val[0].isalpha() # returns True if the variable is an alphabet
print(val[0]) # this will print the first instance of the matching value

Также обратите внимание, что если переменная val возвращает None. Это означает, что поиск не нашел соответствия

138
задан Roman 28 January 2012 в 01:11
поделиться

5 ответов

Я не уверен, что полностью понимаю вопрос, но из названия вашего вопроса я предполагаю, что вы ищете pager.setCurrentItem( num ). Это позволяет вам программно переключаться на другую страницу в ViewPager.

Мне нужно будет увидеть трассировку стека из logcat, чтобы быть более конкретным, если это не проблема.

365
ответ дан Mark Allison 4 September 2018 в 09:49
поделиться

slide вправо

viewPager.arrowScroll (View.FOCUS_RIGHT);

слайд влево

viewPager.arrowScroll (View.FOCUS_LEFT);

11
ответ дан Abror Esonaliyev 4 September 2018 в 09:49
поделиться

для перехода на другую страницу, попробуйте с этим кодом:

viewPager.postDelayed(new Runnable()
{
    @Override
    public void run()
    {
        viewPager.setCurrentItem(num, true);
    }
}, 100);
10
ответ дан David Figueroa 4 September 2018 в 09:49
поделиться

Не проверяя свой код, я думаю, что вы описываете, что ваши страницы не синхронизированы, и у вас есть устаревшие данные.

Вы говорите, что вы меняете количество страниц, а затем рушитесь, потому что вы доступ к старому набору страниц. Это звучит для меня так, как будто вы не вызываете pageAdapter.notifyDataSetChanged() после изменения ваших данных.

Когда ваш viewPager показывает страницу 3 из 10 страниц, и вы переходите к набору только с 5, затем вызовите notifyDataSetChanged(), то, что вы найдете, теперь вы просматриваете страницу 3 нового набора. Если вы ранее просматривали страницу 8 старого набора, после ввода нового набора и вызова notifyDataSetChanged() вы обнаружите, что теперь вы просматриваете последнюю страницу нового набора без сбоев.

Если вы просто измените текущую страницу, вы можете просто маскировать проблему.

16
ответ дан KlimczakM 4 September 2018 в 09:49
поделиться

Дополнительный ответ

У меня возникла проблема с получением ссылки на ViewPager из других методов класса, потому что addOnTabSelectedListener сделал анонимный внутренний класс, который, в свою очередь, потребовал переменную ViewPager быть объявлено final. Решение состояло в том, чтобы использовать переменную-член класса и не использовать анонимный внутренний класс.

public class MainActivity extends AppCompatActivity {

    TabLayout tabLayout;
    ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
        tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
        tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        viewPager = (ViewPager) findViewById(R.id.pager);
        final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

        // don't use an anonymous inner class here
        tabLayout.addOnTabSelectedListener(tabListener);

    }

    TabLayout.OnTabSelectedListener tabListener = new TabLayout.OnTabSelectedListener() {

        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    };

    // The view pager can now be accessed here, too.
    public void someMethod() {
        viewPager.setCurrentItem(0);
    }

}
2
ответ дан Suragch 4 September 2018 в 09:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: