Приложение считывает минуты как секунды

#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;
}