OnTouchListener не работает нормально - PullRequest
0 голосов
/ 14 февраля 2012

У меня проблемы с OnTouchListener.Я хочу, чтобы каждый раз, когда пользователь касался экрана, чтобы перейти к определенной деятельности.Проблема заключается в том, что когда я касаюсь экрана, он выполняет что-то вроде обновления для текущей операции и запускается (текущая операция содержит ViewFlipper, а при касании экрана видоискатель начинает переворачиваться с самого начала).Только при втором касании приложение переходит к следующему действию.Может ли кто-нибудь помочь мне решить эту проблему?

Моя текущая активность расширяется OnTouchListener, я установил myviewflipper.setonTouchListener(this), и мой onTouch() метод:

@Override
    public boolean onTouch(View v, MotionEvent event) {
            finish=true;
        Intent intent = new Intent(getBaseContext(), FinishApplication.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();
        return true;
    }

После того, как я коснулся экрананазывается onPause() и onResume().По методу onResume() я запускаю несколько таймеров для некоторых обновлений (когда обновления производятся, начинается слайд-шоу), и я думаю, что именно поэтому моя деятельность обновляется.Я устанавливаю переменную логическое finish на true только после касания экрана и запускаю обновления, только если finish равно false, но не работает.Моя переменная не установлена ​​в true.Любая другая идея, как я могу решить это?

@Override
    protected void onResume() {
        super.onResume();
        System.out.println("OnResume ViewPlaylist!!");
        t = new Timer();
        t.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    public void run() {
                        Imalive();
                    }
                });

            }

        }, 300, 30000);

        if (finish != true) {
            System.out.println("Start update!");
            update = new Timer();
            update.scheduleAtFixedRate(new TimerTask() {

                @Override
                public void run() {
                    runOnUiThread(new Runnable() {
                        public void run() {
                            updateItems();
                        }
                    });
                }

            }, 30000, 20000);
        } else {
            finish = true;
            Intent intent = new Intent(SlideShow.this, FinishApplication.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();


}
}

1 Ответ

0 голосов
/ 20 февраля 2012

Я решаю это, вызывая finish() для onPause() метода.

...