2015-10-14 50 views
0

我剛剛開始使用Android Studios並希望通過Button Clickevent創建一個具有可設置的Start值的CountDownTimer。 到目前爲止我的代碼:`Android:CountDownTimer使用EditText中的按鈕設置起始值

private static final String TAG = "MSchlanstedt"; 
private int number; 
boolean status = true; 
private CountDownTimer myTimer; 

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

    final ProgressBar bar = (ProgressBar)findViewById(R.id.progressBar); 
    final EditText Time = (EditText)findViewById(R.id.text); 
    final Button Button = (Button)findViewById(R.id.start); 
    final TextView textView = (TextView)findViewById(R.id.textView); 

    Button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (status == true) 
      { 
       Button.setText("Stop"); 
       number = Integer.valueOf(Time.getText().toString())*1000; 
       myTimer.start(); 
       status = false; 
       Log.d(TAG, "Button.onClick():Start " + number); 
      }else 
      { 
       myTimer.cancel(); 
       Button.setText("Start"); 
       Log.d(TAG, "Button.onClick():Stop " + number); 
       status = true; 
      } 

     } 
    }); 

    myTimer = new CountDownTimer(number,1000) { 
     public void onTick(long millisUntilFinished) 
     { 
      Log.v(TAG,"CountDownTimer.onTick(): sUntilFinished: "+number+"/"+ millisUntilFinished /1000); 
      textView.setText(String.valueOf(millisUntilFinished/1000)); 
     } 
     public void onFinish() 
     { 
      Log.v(TAG,"CountDownTimer.onFinish()"); 
     } 
    }.start(); 
} 

...`

我的問題是,文本開頭之間和按鈕開關停止,但在倒計時不會與我整型數字開始。如果我將起始值設置爲3000,則它完美啓動。

我的問題是我如何獲得我的EditText的值作爲我的CounterDown的開始值。

這是我在stackoverflow上的第一個問題,請耐心等待我和我的英語不好。

+0

請添加您的logcat –

+0

更改Edittext名稱。你不應該設置像「時間」這樣的名字。 –

+2

'私人int編號;'自動初始化爲'0'。 'myTimer = new CountDownTimer(number,1000){...}'在設置OnClickListener之後運行。因此'number'爲'0',並且'myTimer = new CountDownTimer(0,1000){...}'被執行。 – GiantTree

回答

2

創建方法

private void showCountDownTimer(int number) { 
    myTimer = new CountDownTimer(number, 1000) { 
      public void onTick(long millisUntilFinished) 
      { 
       Log.v(TAG,"CountDownTimer.onTick(): sUntilFinished: "+number+"/"+ millisUntilFinished /1000); 
       textView.setText(String.valueOf(millisUntilFinished/1000)); 
      } 
      public void onFinish() 
      { 
       Log.v(TAG,"CountDownTimer.onFinish()"); 
      } 
    }.start(); 
} 

,並調用它在onClick

Button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (status == true) 
      { 
       Button.setText("Stop"); 
       number = Integer.valueOf(Time.getText().toString())*1000; 
       showCountDownTimer(number); 
       status = false; 
       Log.d(TAG, "Button.onClick():Start " + number); 
      }else 
      { 
       myTimer.cancel(); 
       Button.setText("Start"); 
       Log.d(TAG, "Button.onClick():Stop " + number); 
       status = true; 
      } 

     } 
    }); 

說明:

因爲你初始化numbermyTimer(CountDownTimer)中的onCreate,你的默認值是0.你應該在飛行中初始化它(當你得到值)。