2012-11-27 2 views
2

내가에서 onCreate 방법이 코드가 누를 때 나는 새로운 활동로드 정확하게 이미지를 터치하면onTouch은 다시 버튼을 트리거

ImageView iv01 = (ImageView)findViewById(R.id.hexagon01);   
    iv01.setOnTouchListener(new OnTouchListener(){ 
     public boolean onTouch(View view, MotionEvent event) { 
      Intent intent = new Intent(view.getContext(), ChoiceActivity.class); 
      startActivity(intent); 
      return true; 
     } 
    }); 

합니다. 나는 뒤로 버튼을 눌러 되돌아 갈 수있다. 그러나 다시 버튼을 눌러 앱을 닫으면 onTouch 이벤트가 다시 시작되어 다시 활동을로드합니다. 어떻게 피할 수 있습니까?

감사합니다.

답변

0

이미지를 누르면 새로운 활동이 올바르게로드됩니다. 나는 뒤로 버튼을 눌러 되돌아 갈 수있다. 그러나 다시 버튼을 눌러 앱을 닫으면 onTouch 이벤트가 다시 시작되어 다시 활동을로드합니다.

솔직히 말하면, 뒤로 버튼은 활동의 새로운 사본을 시작하지 않습니다. OnTouchListener는 각 ACTION_DOWN, ACTION_MOVEACTION_UP MotionEvent에 대한 활동의 ​​새 복사본을 실행합니다.

public boolean onTouch(View view, MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_UP) { 
     Intent intent = new Intent(view.getContext(), ChoiceActivity.class); 
     startActivity(intent); 
     return true; 
    } 
    return false; 
} 

또는 당신이 OnClickListener을 사용할 수 있습니다 활성 작업을 닫으려고하지만 당신은 단지

간단히 만 MotionEvent에 새로운 활동을 시작할 수 있도록 ... 수많은 활동을 통지 여기 대신.

1

OnTouchListener는 여러 가지 이유로 트리거됩니다 (정확한 이유를 찾으려면 MotionEvent 매개 변수를 확인해야합니다). OnClickListener를 사용하여 더 쉬운 방법으로 동일한 것을 달성해야합니다.

관련 문제