#android #android-studio #countdowntimer
#Android #android-studio #таймер обратного отсчета
Вопрос:
Я новичок здесь, поэтому извините, если вы чего-то не поймете. Итак, я создаю таймер обратного отсчета, когда устанавливаю значение с помощью кнопок и -, и я хотел бы установить это в форме «1min: 10seconds», но мое приложение считывает его как 110 секунд. Как его преобразовать?
public class MainActivity extends AppCompatActivity {
Button btn1, btn2, btn3;
TextView tv1;
int czasrundy=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1=findViewById(R.id.button1);
btn2=findViewById(R.id.button6);
btn3=findViewById(R.id.button7);
tv1=findViewById(R.id.textView20);
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String czarundy=tv1.getText().toString();
final long dłrundy = getTimeInLong(czarundy) * 1000;
CountDownTimer countDownTimer=new CountDownTimer(dłrundy,1000) {
@Override
public void onTick(long millisUntilFinished) {
tv1.setText ("" millisUntilFinished/1000);
}
@Override
public void onFinish() {
}
}.start();
}
});
}
public void odejmowanie1(View view) {
if (czasrundy>=5){
czasrundy=czasrundy-5;
display2(czasrundy);
}
}
private void display2(int czasrundy) {
TextView displayInteger =(TextView)findViewById(R.id.textView20);
String formatowanczas=String.format("%d:d", czasrundy/60, czasrundy %60);
displayInteger.setText(formatowanczas);
}
public void dodawanie1(View view) {
czasrundy=czasrundy 5;
display2(czasrundy);
}
public long getTimeInLong(String input) {
StringBuilder builder = new StringBuilder();
String[] splittedString = input.split(":");
builder.append(splittedString[0]);
builder.append(splittedString[1]);
return Long.parseLong(builder.toString());
}
}
Ответ №1:
Я думаю, что ваша проблема заключается в том, что при разборе вашей строки вы объединяете «1» и «10» в stringbuilder. Вы должны проанализировать, сделать что-то вроде этого
public long getTimeInLong(String input) {
StringBuilder builder = new StringBuilder();
String[] splittedString = input.split(":");
Long min = Long.parseLong(splittedString[0]) * 60;
Long sec = Long.parseLong(splittedString[1]);
return min sec;
}