2017-12-16 11 views
-1

新しいアプリプロジェクトを開始したばかりですが、問題があります。私はボタンをアンドロイドにしたいと思います。ブレスレットを使用して、もう一度押すと別の機能に切り替わります。場合は、私はCountDownTimerのためのスタート/ストップボタンを作っているコンテキストが必要です。私はこれが私の頭上を飛んでいる単純な概念か、それとも実際の複雑なプロセスかを知りたいのです。ありがとう!ブーリアンを使用する2つの機能を持つボタン?

注:これは、ボタンを長押しした場合の処理​​についてのものではありません。これは、最初に押されたときにボタンを操作したときと、もう一度押されたときにそのボタンを処理することを指しています。

は、ここに私のコードです:

TextView timerText; 
CountDownTimer countDownTimer; 
Button controlButton; 
boolean timerisActive; 

public void controlClick(View view) { 

     countDownTimer = new CountDownTimer(timerTime + 100, 1000) { 
      @Override 
      public void onTick(long millisUntilFinished) { 
       Long minutes = millisUntilFinished/1000/60; 
       Long seconds = millisUntilFinished/1000 - minutes * 60; 
       String secondString = seconds.toString(); 
       String minuteString = minutes.toString(); 
       if (seconds <= 9) { 
        secondString = "0" + secondString; 
       } 
       timerText.setText(minuteString + ":" + secondString); 
      } 

      @Override 
      public void onFinish() { 
       timerText.setText("0:00"); 
      } 

     }.start(); 
     if(timerisActive = true){ 
      countDownTimer.cancel(); 
      timerText.setText("0:00"); 
     } 
     controlButton.setText("Stop"); 

    } 
+0

いいえ、クリックと長い上に異なるアクションに関する上記の質問会談クリックすると、別の状態でクリックを処理することではなく、 –

+1

Antonyありがとうございました。これを明確にする質問を編集しました。うまくいけば、これはマークされていません。 – x27Computer

答えて

0

使用はそのブール

に基づいて、第1の時間や二時間をクリックすると、チェック作るよりも、この

のような新しいboolean変数を作成し、これを試してみてください

button.setOnClickListenerのコードは次のようになります

そして、あなたはsucessionで実行することになりアクションの配列を作成

interface ButtonAction { 
    void perform(); 
} 

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     if (isfirstTime) { 
      // call here first time action 
      isfirstTime=false; 
     }else { 
      // call here second time action 
     // make isfirstTime = true; 
     // if you want to perform again first time action after second time use press the button 
     } 


    } 
}); 
0

可能なアプローチは、あなたが最初のようなアクションのインターフェイスを作成し、です。サイズ2の配列を使用すると、トグルアクションセットが得られますが、サイズが大きい場合は、切り替えアクションセットの柔軟性が得られます。

private ButtonAction[] allButtonActions = ... // Create the concrete action implementations. 

とActiveアクションのインデックス保つ:次に

private int activeActionIndex = 0; 

をボタンクリックイベントハンドラで:

allButtonActions[activeActionIndex].perform(); 

// Perform next action at next click. 
activeActionIndex++; 

// Wrap to first action if reached last action already. 
if (activeActionIndex >= allButtonActions.length) { 
    activeActionIndex = 0; 
} 
関連する問題