Android - Использование Timer в ViewPager

197
03 ноября 2017, 08:37

Возможно ли использовать Timer в VievPager?

Чтобы немного облегчить понимание вопроса, объясню: в приложении нужно добиться того, чтобы была возможность листать "страницы", где на одной из них, выборочно, изменяется, раз в секунду, текст (в данном случае идёт время).

Перелистывание "страниц" было решено осуществить с помощью VievPager

Первоначальный код делал как по образцам в интернете:

1) В MainActivity поместил код для адаптера

ViewPager pager=(ViewPager)findViewById(R.id.pager);
                pager.setAdapter(new MyAdapter(getSupportFragmentManager()));
                pager.setCurrentItem(1);

2) В MyAdapter поместил код определяющий количество страниц (их 3) и образование фрагментов (если не ошибаюсь)

public class MyAdapter extends FragmentPagerAdapter {
    public MyAdapter(FragmentManager mgr) {
        super(mgr);
    }
    @Override
    public int getCount() {return(3);} //Колличество страниц (3)
    @Override
    public Fragment getItem(int position) { //getItem создаёт новую страницу
        return(PageFragment.newInstance(position));
    }
}

3) А уже в PageFragmen поместил остальной код, который, нужно заметить, без таймера работает идеально. Проблема находится именно в TimerTask.

Во время расписывания TimerTask, мне нужно, чтобы TextView ежесекундно обновлялся. Для этого, после действия таймера, я использую строчку:

...
    runOnUiThread(new Runnable() { //Для оновления данных
                        @Override
                        public void run() { 
...

Запустить программу мне никак не даёт выделение красным "runOnUiThread", наведя на него появляется надпись:

Cannot resolve method 'runOnUiThread(anonymous java.lang.Runnable)'

Надеюсь, изложил понятно. Рассчитываю на вашу помощь.

Answer 1

runOnUiThread это метод Activity. Чтобы использовать его во фрагменте, пишите так:

getActivity().runOnUiThread(new Runnable() { //Для оновления данных
        @Override
        public void run() { 
            ...
        }
});
READ ALSO
Пересечение данных в разных потоках

Пересечение данных в разных потоках

Есть параллельное выполнение с помощью функции AsParallel() некоторого циклаВ данном цикле создается один и тот же объект с разными входными данными...

251
Совмещение lock и параллельного прохода данного блока

Совмещение lock и параллельного прохода данного блока

Есть цикл, в котором рассчитываются данныеВ каждом новом проходе создается объект с входными параметрами и после расчета эти входных параметров...

224
Реализация коллекций через ConsoleApp

Реализация коллекций через ConsoleApp

Исходные данные: Примитивное консольное приложение, допустим по выбору президента на выборахПосле запуска приложения пользователь должен...

236
Xamarin не работает после установки

Xamarin не работает после установки

Установил Xamarin в VS 2017Создаю проект Cross Platform App > Пустое приложение > Xamarin

223