2012-02-14 8 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() 메서드에서 일부 업데이트 (업데이트가 이루어지면 슬라이드 쇼가 시작될 때)를위한 타이머를 몇 개 시작합니다. 이것이 내 활동이 새로 고침되는 이유입니다. finishfinish이 일 때만 화면이 터치되고 업데이트가 시작된 후에 만 ​​true으로 설정되지만 작동하지 않습니다. 내 변수가 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

나는 onPause() 방법에 finish()를 호출하여이 문제를 해결.

관련 문제