私はJavaの初心者です(3ヶ月未満の経験)、私が作業しているプロジェクトではタイマーを作成する必要があります。 私はこれまでこれをやったことがありますが、私は1つのことをする方法を知らない。Androidスタジオの別のタイマーを使用してタイマーを開始するには
2番目のタイマーが終了すると、タイマーを開始します。つまり、開始/停止ボタンを使用してタイマーを開始するのではなく、最初のタイマーがいつ開始されるのかを決定する2番目のタイマー(3秒で開始)を設定します。例えば、最初のタイマーが30秒であれば、2番目のタイマーが3-0からカウントダウンを終了するとカウントダウンを開始します。
これを行うには他のクラスまたはメソッド/リスナーが必要であることは知っていますが、これまでに述べたように、これまでJava(通常はC++を使用)で作業しています。
これを達成するためのヘルプ/ガイダンス/コードはすばらしいでしょう。これを試してこれを達成するために私が周りを歩いていたコードはここにあります。
のJava
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.os.CountDownTimer;
public class Timer extends AppCompatActivity
{
TextView timer;
TextView timerStart;
Button multi;
int track;
int seconds;
CountDownTimer countDownTimer;
CountDownTimer start;
View.OnClickListener btnListen = new View.OnClickListener(){
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.multi : start();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_timer);
timer = (TextView) findViewById(R.id.timer);
timerStart = (TextView) findViewById(R.id.timerStart);
multi = (Button) findViewById(R.id.multi);
multi.setOnClickListener(btnListen);
multi.setText("Start");
}
public void start_timer()
{
track = 3;
start = new CountDownTimer(3*1000,1000) {
@Override
public void onTick(long millisUntilFinished) {
timerStart.setText("" + millisUntilFinished/1000);
}
@Override
public void onFinish() {
timerStart.setText("Begin");
track = 0;
}
}.start();
seconds = 30;
if (timerStart.getText().equals("Begin"))
{
start.cancel();
countDownTimer = new CountDownTimer(30 * 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
timer.setText("" + millisUntilFinished/1000);
}
@Override
public void onFinish() {
timer.setText("BEEP");
}
}.start();
}
else
{
System.out.println("Nothing");
}
}
public void start()
{
start_timer();
/*seconds = 30;
if (timerStart.getText().equals("Begin"))
{
countDownTimer = new CountDownTimer(seconds * 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
timer.setText("" + millisUntilFinished/1000);
}
@Override
public void onFinish() {
timer.setText("BEEP");
}
}.start();
}*/
}
}
繰り返しますが、これは私が周りいじるてるだけのものです。これを行う別の方法がある場合(RunnableまたはHandlerを使用する場合のように)、私はそれを開いています。私の目標はJavaを学ぶことです。
非常に情報的です!どうもありがとうございます!私はこの機能から別のタイマーをモデル化します。 :) –
私はあなたの問題に直面した。 timer1.setNext(timer2).start();何らかの理由で認識されません。 あなたの変更の後に名前を付けたクラスとそれを拡張する別のクラスを作成しました。しかし、それはエラーを与える唯一の作品です –
あなたのコードを表示することはできますか? – nakano531