2009-04-12 5 views
14

ボタンのonLongClickイベントとonClickイベントを使用してユーザー入力を取得します。いつでも;ユーザーが長いクリックをしてonLongClickイベントをトリガーすると、onClickイベントもトリガーされます。私は自分の問題を見つけることができませんでした。 2つの方法のコードを以下に示します。LongClickイベントもトリガするClickイベント

@Override 
    public void onClick(View v) { 
     switch(((Button) v).getId()) 
     { 
     case R.id.enter: 
      EntertheNumber(); 
      break; 
     case R.id.clear: 
      CleartheNumber(); 
      break; 
     case R.id.number_zero: 
     case R.id.number_one: 
     case R.id.number_two: 
     case R.id.number_three: 
     case R.id.number_four: 
     case R.id.number_five: 
     case R.id.number_six: 
     case R.id.number_seven: 
     case R.id.number_eight: 
     case R.id.number_nine: 
      AddtotheNumber(mEditor, (Button) v); 
      break; 
     } 
@Override 
    public boolean onLongClick(View view) { 
     if(SMBGuesstheNumber.bDisplayFlagList) 
     { 
      theActiveButton = (Button) view; 
      showDialog(R.id.display_flaglist); 
     } 
     return false; 
    } 

実際、私のプロジェクトはオープンソースです。したがって、すべてのコードを見つけることができますhttp://code.google.com/p/guessthenumber/

ありがとうございます。

答えて

32

これらのイベントの発生順序はわかりませんが、onLongClickハンドラはイベントが処理されたかどうかを示すboolを返します。他のクリックイベントが呼び出されないように処理した場合は、trueを返す必要があります。私はこれがonClick()が発射するのを防ぐのを防ぐかどうかはわかりません。

またオフとsetClickable(ブール値)とsetLongClickableあなたはUIイベントhereに関する情報や詳細を見つけることができます

(boolean)を使用して、これらのイベントをオンにします。ここ

+2

私はブール値を逃したどのように来ます。あなたは間違いなく正しいです。 trueを返すとonClickが無効になります。ありがとう。 –