2012-02-14 3 views
0

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

Моя текущая деятельность распространяется 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() я запускаю некоторые таймеры для некоторых обновлений (когда сделаны обновления, начинается слайд-шоу), и я думаю, что именно поэтому моя активность обновляется. Я установил переменную boolean 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(); 


} 
} 
+0

у вас есть код с отладчиком? – WarrenFaith

ответ

0

Я решить эту проблему, вызвав finish() на onPause() методом.

Смежные вопросы