2015-02-25 3 views
1

Я пытаюсь сделать основной таймер обратного отсчета. Я буду честен, я получил большую часть этого через учебник, поэтому я не полностью понимаю его работу, но я много часов пытался найти ответ, и я не знаю, где еще искать.TimeUnit Не удается разрешить символ

Я получаю «Не удается разрешить символ» внизу после TimeUnit. Например: МИЛЛИЗИКИ, СЕКУНДЫ, МИНУТЫ.

package com.dukehatz.dev.bwexercise; 

import android.os.CountDownTimer; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import org.w3c.dom.Text; 

public class Dips extends ActionBarActivity { 

    TextView CountdownTimer; 
    Button TimeStart, TimeReset; 

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

    TimeStart = (Button) findViewById(R.id.TimeStart); 
    TimeReset = (Button) findViewById(R.id.TimeReset); 
    CountdownTimer = (TextView) findViewById(R.id.CountdownTimer); 

    CountdownTimer.setText("5:00.000"); 

    final CounterClass timer = new CounterClass(100000, 1000); 
    TimeStart.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      timer.start(); 
      } 
     }); 
    } 

    public class CounterClass extends CountDownTimer { 

    public CounterClass(long millisInFuture, long countDownInterval) { 
     super(millisInFuture, countDownInterval); 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     long millis = millisUntilFinished; 
     String hms = String.format("%02d:%02d:%02d"), 
      TimeUnit.MILLISECONDS.toHours(millis), 
      TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis), 
      TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis); 
     System.out.print(hms); 
     CountdownTimer.setText(hms); 
    } 

    @Override 
    public void onFinish() { 
     CountdownTimer.setText("Complete!"); 
    } 
    } 
} 

Я все для более простого начинающего способа сделать это, если он существует.

Спасибо за любую помощь

+0

В качестве стандартного java-стиля переменные начинаются с буквы нижнего регистра, если только они не являются константами/перечислениями, и в этом случае они находятся в ALL_CAPS с символами подчеркивания. Таким образом, 'CountdownTimer' будет лучше назван' countdownTimer' и т. Д. Это упростит другим пользователям быстрее читать ваш код. – kd8azz

ответ

4

Вы пропустили импорт. Я не знаком с библиотеками, которые вы используете, но они, вероятно, ожидают java.util.concurrent.TimeUnit. Если да, добавьте import java.util.concurrent.TimeUnit; в список импорта.

EDIT-

Ах, да. У вас также есть несколько отсутствующих/неуместных круглых скобок. Сравните это:

@Override 
public void onTick(long millisUntilFinished) { 
    long millis = millisUntilFinished; 
    String hms = String.format("%02d:%02d:%02d", 
     TimeUnit.MILLISECONDS.toHours(millis), 
     TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), 
     TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))); 
    System.out.print(hms); 
    CountdownTimer.setText(hms); 
} 

Идея заключается в том, что часы, минута и секунда вы проезжаете являются параметрами методы string.Format. Они соответствуют фразам «% 02d» в строке формата. Все параметры должны быть в(), когда вы вызываете метод.

+0

Добавил это, и он просто говорит мне, что он не используется. Я не видел никаких ошибок с TimeUnit, именно это слова, которые находятся во ВСЕХ CAPS, которые выделены, поскольку не могут разрешить символ. Это вообще помогает? – Derrick

+0

СПАСИБО! Конечно, это было что-то простое. Сочетание двух вещей, которые вы сказали, исправлено. – Derrick

Смежные вопросы