Преобразование обычного примера таймера обратного отсчета в Android для приема пользовательского ввода

Изучение ADT, исходящее из фона C/HTML/CSS/JS, в основном в xCode и Linux (предпочтение от Nano). У меня возникают некоторые проблемы при адаптации и надеюсь, что я смогу получить некоторые указания о том, как обернуть голову вокруг различий в этих простых простых шагах.

Я работаю с одной из самых распространенных вариаций на примере Wookied Davids "Cookbook для Android":

http://androidbite.blogspot.com/2012/11/android-count-down-timer-example.html

Моя назначенная задача состоит в том, чтобы использовать это в качестве основы для простого приложения для яичного таймера (возврат к FroYo), когда пользователь вводит время, в которое они хотят отсчитывать, в EditText (вместо фиксированных 30 секунд).

Я внесла следующие изменения в макет:

<!--?xml version="1.0" encoding="utf-8"?-->
<button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_centerhorizontal="true" android:padding="10dip" android:text="Start"><code>&lt;--Here the part I added, SO!--&gt;</code> <p> Но следующий шаг в основной деятельности Java ускользает от меня. Я изменил определение <code>startTime</code> на <code>public long</code> от <code>private final long</code> и по существу работал с куском кода следующим образом:</p> <pre class="prettyprint linenums">//get countdown interval from user
EditText myEdit = (EditText) findViewById(R.id.time);
//convert edit text to string 
String numString = myEdit.getText().toString();
//convert string to integer
***** = Integer.parseInt(numString);
//convert integer to long number of milliseconds
long localStartTime = (Long.valueOf(*****) * 1000);

Я попытался сделать его собственным классом в файле активности и вернуть localStartTime затем присвоить это startTime, вызвав его как из onCreate который сбой, так и onClick (который просто отсчитывает от первоначально заданного значения startTime.) Я также попробовал это как прямой фрагмент кода в onCreate так что последняя строка выглядит примерно так: startTime = (Long.valueOf(*****) * 1000); перед вызовом countDownTimer = new MyCountDownTimer(startTime, interval); но это снова позволяет вам вводить текст, но не будет обратный отсчет от того, что, как я полагаю, присвоено переменной startTime.

Я также попробовал вариант ответа Кена Вольфа: Android java EditText, чтобы установить попытку-catch в onCreate но снова может ввести время, не считая его, когда вы нажмете кнопку " onCreate.

Если вы решили прочитать все это, спасибо, и я попрошу вас, чтобы вы сосредоточились на двух вещах, отвечая на этот вопрос. Во-первых, так же просто, как может показаться опытному программисту на Java, как бы вы к этому подошли? Во-вторых, каковы способы мышления о Android Java, которые мне не хватает в мыслях C/JavaScript, которые стоят на моем пути?

Спасибо.

1 ответ

Я нашел ваш вопрос из-за другого вопроса, который у меня был с таймером обратного отсчета. Если вы просто хотите, чтобы таймер использовал входные данные пользователя, то время начала может оказаться полезным. Таймер обратного отсчета, по-видимому, принимает только длительность.

EditText timetocountdown = (EditText)findViewById(R.id.userinput);
 String tmrstring = timetocountdown.getText().toString();

 Long A = Long.parseLong(tmrstring); 
 startTime = (A * 60000);
 countDownTimer = new MyCountDownTimer( startTime, interval);
 countDownTimer.start(); 
 timerHasStarted = true;

licensed under cc by-sa 3.0 with attribution.