2012-11-27 49 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_DOWNACTION_MOVEACTION_UP MotionEvent啓動活動的新副本。但你只注意到了許多活動,當您試圖關閉活動活動......

只需確保只有發動一個 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在這裏。

1

由於多種原因,OnTouchListener被觸發(您需要檢查MotionEvent參數才能找到確切的原因)。看起來你應該只使用一個OnClickListener並以更簡單的方式實現相同的功能。