2017-03-22 7 views
0

私の問題は下に向かっていますが、私はブール値が継続していますはfalseです。ボタンが押された状態で真になった後、カウントダウンタイマーを開始しますが、タイマーは開始されません。タイマーはコード内の他の場所に配置されます。申し訳ありませんが完全な混乱の場合、私はこれに新しいです。CountDownTimerがifステートメントで開始していません

public int counter; 
public boolean ongoing = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //0-59 number picker to represent seconds 
    final NumberPicker secPicker = (NumberPicker) findViewById(R.id.secPicker); 
    secPicker.setMaxValue(59); 


    Button btnStart = (Button) findViewById(R.id.btnStart); 
    Button btnSet = (Button) findViewById(R.id.btnSet); 
    Button btnPause = (Button) findViewById(R.id.btnPause); 
    final TextView label = (TextView) findViewById(R.id.txtCount); 


    //sets the time chosen to timer with button press btnSet 
    btnSet.setOnClickListener(
      new View.OnClickListener() { 
       public void onClick(View v) { 
        counter = secPicker.getValue(); 
        label.setText(String.valueOf(counter)); 
       } 
      } 
    ); 


    //starts timer from selected time, from number picker, with btnStart 
    btnStart.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      ongoing = true; 


     } 
    }); 
    //disables, not worried about this yet 
    btnPause.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      ongoing = false; 


     } 
    }); 


     //supposed to turn on a timer with button press btnStart, but it does nothing this is my problem. 
     if (ongoing == true) { 
      //any replacement for 9999999, as an infinite value? 
      new CountDownTimer(999999999, 1000) { 
       public void onTick(long millisUntilFinished) { 
        label.setText(String.valueOf(counter)); 
        counter--; 
        if (counter == -1) { 
         counter = 0; 
         cancel(); 
        } 
       } 

       public void onFinish() { 

       } 

      }.start(); 

     } 
    } 
} 
+0

なぜこのように書くか - if(進行中== true)単にif(継続中)を追加する、演算子と等しい必要はない – Sach

答えて

0
if (ongoing == true) // this will never work for you 

あなたはそれを呼び出すでしょう何かをクリックする前に、OnCreate関数内のコードの上にパットされています。

btnStart clickイベント内に以下のコードを記述するか、1つのメソッドを作成して呼び出してください。

//ボタンでbtnStartを押してタイマーをオンにするはずですが、これは私の問題です。

if (ongoing == true) { 
    //any replacement for 9999999, as an infinite value? 
    new CountDownTimer(999999999, 1000) { 
     public void onTick(long millisUntilFinished) { 
      label.setText(String.valueOf(counter)); 
      counter--; 
      if (counter == -1) { 
       counter = 0; 
       cancel(); 
      } 
     } 

     public void onFinish() { 

     } 

    }.start(); 

} 

これらの情報が役立ちます。

関連する問題