Не всегда срабатывает scrollTo

100
22 июня 2021, 19:50

Если запускаю метод softReset содержащий scrollTo(0,0)

public void softReset() {
    scrollTo(0, 0);
}

внутри своего класса TableView (extends View), например по двойному тапу onDoubleTap(MotionEvent event), то все срабатывает как должно.

    @Override
public boolean onDoubleTap(MotionEvent event) {
    softReset();
    return true;
}

Если запускаю тот же метод снаружи из MainActivity по кнопке "назад" onBackPressed(), то метод softReset запускается, но scrollTo(0,0) в нем не срабатывет, но если нажать кнопку "назад" второй раз то срабатывает.

@Override
    public void onBackPressed() {
            table.softReset();
    }

Пробовал запускать метод дважды подряд

@Override
    public void onBackPressed() {
           table.softReset();
           table.softReset();
    }

все равно не помогает.

Никаких новых потоков я не открывал, так как приложение очень легкое. Может быть именно в этом проблема?

Добавлено 09.09 13:20 Обнаружил когда баг проявляется, а когда нет. Если один раз крутануть (onFling) и отпустить палец до остановки скроллинга, а потом нажать "назад" - то бага нет, метод scrollTo() срабатывает и все возвращается нормально. Если двигать, а потом отпустить и после этого нажать "назад" то баг есть.

Answer 1

Надо вызывать post():

table.post(new Runnable() {
    @Override
    public void run() {
        table.softReset();
    } 
});
READ ALSO
Аналог базы данных в объектах

Аналог базы данных в объектах

Дали задание написать консольное приложение, база студентов, не используя баз данных, а только объекты для храненияВ чем суть задания

100
Анимация прогресс-бара

Анимация прогресс-бара

Я пытаюсь сделать анимацию прогресс-бара https://codepenio/mihail-kamahin/pen/YzKZjWd Я хочу сделать так, чтобы из одной точки круга анимация начиналась сразу...

105
Последовательное выполнение задач

Последовательное выполнение задач

Есть две Gulp задачиКогда я пытаюсь ввести предвыполнение pug:data перед pug, выполняется только pug:data

79