에는 CountDownTimer에 대한 질문이 있습니다. 사용자가 버튼을 클릭 할 때마다 +1을하여 시간을 늘릴 수있는 응용 프로그램을 만들어야합니다. 그런 다음 버튼을 클릭 한 후 3 초 동안 기다린 다음 카운트 다운을 시작합니다.카운트 다운 타이머 초기화 안드로이드
아래 코드를 붙여 넣었습니다.
내 문제가 있습니다 : 내가 제대로 작동 수의 증가를 얻을 수없는 것, 그러나 내가 수를 증가 중지 후 (이동 중지())가 직접가는 것 같습니다 (onFinish()). OnTick()에 가서 매초마다 1 씩 숫자를 줄이는 대신. 이 문제를 해결하기 위해 여러 가지 방법을 시도해 왔지만 막혔습니다.
누구나 나를 올바른 방향으로 이끌 수 있습니까? 어떤 도움을 주시면 감사하겠습니다. 고마워요!
public class MainActivity extends Activity {
Button incrementTime, startTime;
public TextView timedisplay;
public myTimer wavetimer;
private long millisInFuture;
private long millisUntilFinished;
private long countDownInterval;
private long onclicktime;
//private WaveInterface model;
public int countdown;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
incrementTime = (Button) findViewById(R.id.button2);
startTime = (Button) findViewById(R.id.button3);
incrementTime.setText("Increment Time");
startTime.setText("Start");
timedisplay = (TextView) findViewById(R.id.mycounter);
timedisplay.setText("Time Left: " + millisUntilFinished);
wavetimer = new myTimer (millisInFuture, 1000);
incrementTime.setOnClickListener(new OnClickListener(){
int countdown = 01;
/**
* On click button Listner
* @return
*/
public void onClick(View v) {
millisInFuture++;
return;
}
});
startTime.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
wavetimer.start();
}
});}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public class myTimer extends CountDownTimer {
public long millisInFuture;
private long countDownInterval;
public myTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
millisUntilFinished--;
if (millisUntilFinished == 0){
wavetimer.onFinish();
}
else {
timedisplay.setText("Time Left: " + millisUntilFinished/1000);
}
}
@Override
public void onFinish() {
timedisplay.setText("Countdown Finished");
wavetimer.cancel();
}
public void onStop() {
millisInFuture = millisInFuture + 1;
timedisplay.setText("Time Left: " + millisInFuture);
}
숫자를 올바르게 늘리는 방법을 생각할 수 없습니다. 나는 여러 가지 방법을 시도해 왔고 계속 엉망이되었습니다. 봐야할지 모르겠다. 어떤 도움을 주시면 감사하겠습니다. 고마워요! 당신은 시간이 카운트 다운 클래스에 때 수동으로 onFinish
를 호출 할 필요가 없습니다 것을 알지, 어느 쪽도 아니 당신이 하나가 다른 리드 또는 수동으로 아무것도 감소 당신이 onFinish
에 취소해야해야
다음 시간 형식 사용의 값을 표시하려면? – njzk2
incrementTime을 마지막으로 클릭 한 후 3 초를 기다리려면 핸들러와 sendMessageDelayed 및 removeMessage가 필요합니다. – njzk2
죄송합니다. 시작하려면 onStop을 사용했습니다. 나는 더 분명해야했다. 좀 더 간단하게 만들고, 나중에 onStop을 구현하려고합니다. 나는 실제로 시간 증가분을 감소시킨 다음에 감소시키는 부분을 지나갈 수 없다. – Bob