Intereting Posts
Есть встроенный API для работы с функцией масштабирования в Android Странное имя приложения APK для Android на ежевике 10 Android: обрабатывать неожиданное подключение к Интернету при загрузке данных Ошибка FragmentPagerAdapter getItem с помощью ListFragment Android Location Providers – GPS или сетевой провайдер? Полезная нагрузка уведомления GCM 3.0, не отображающая уведомление об андроиде, когда приложение находится на переднем плане Запрос всегда возвращает нулевой курсор Уведомления с несколькими линиями в Интернете, такие как приложение Gmail RecyclerView LinearLayout manager всегда возвращает -1 в ландшафтном режиме – findLastCompletelyVisibleItemPosition () Есть ли готовый ресурс / виджет для «приятного» неопределенного индикатора прогресса в Android Wear? Гистограмма с использованием ахартангенина Как сделать автоматизацию пользовательского интерфейса в Android? Android-клавиатура не появляется при вызове фокуса на текстовом поле sencha Надуть макет с помощью ImageButton внутри фрагмента программно Ошибка добавления нижнего колонтитула в ListView

Получение строкового значения в MainActivity из SecondActivity, а затем подсчет его

В моей программе вы устанавливаете строковое значение для таймера обратного отсчета в secondActivity. Затем это значение отправляется в текстовый файл MainActivities, который затем должен начинать отсчет, как только будет извлечено значение. Прямо сейчас я сделал это так, чтобы вы могли установить значение, и значение правильно выбрано, но то, что я не знаю, как это сделать, – это начать подсчет этого значения, когда оно получено. Я уже создал CounterClass. Вот мой код MainActivity …

Bundle extras = getIntent().getExtras(); String intentString; if(extras != null) { intentString = extras.getString("TimeValue"); timer = new CounterClass(60000, 1000); timer.start(); timeSent(); } else { intentString = "Default String"; } textTime= (TextView) findViewById(R.id.timeText); textTime.setText(intentString); 

Вам нужно запустить свой таймер. Всегда читайте документы .

 timer = new CounterClass(millisInFuture, countdownInterval); timer.start(); 

РЕДАКТИРОВАТЬ

MillisInFuture — Количество миллисов в будущем от вызова до начала () до тех пор, пока не будет обратный отсчет, и вызывается onFinish ().

CountDownInterval — Интервал по пути получения onTick (длинных) обратных вызовов.

РЕДАКТИРОВАТЬ 18-12-2015

Преобразуйте свою цельString в millisInFuture и отправьте ее в CounterClass. А затем отформатируйте его обратно в HH: MM в onTick() .

 String time = "16:54"; String split[] = time.split(":"); long futureInMillis = Integer.parseInt(split[0]) * 60 * 60 * 1000 + Integer.parseInt(split[1]) * 60 * 1000; 

Допустим, вы действительно хотите реализовать свой собственный класс.
Я думаю, что лучший и чистый способ сделать это – через интерфейс.

Сначала создайте класс интерфейса.
AddTimes.java

 public interface AddTimes { void writeTime(String time); } 

Теперь реализуйте свой интерфейс в своем классе.

 public class MainActivity extends AppCompatActivity implements AddTimes{ 

Используйте переменную TextView класса textTime,

  timeText = (TextView)findViewById(R.id.timeText); //remove declaration TextView and use timeText instead of textTime . 

Начать свой класс

 new CounterClass(5000L,500L, this).start(); 

В CounterClass добавьте конструктор.

  AddTimes addTimes; public CounterClass(long millisInFuture, long countDownInterval, AddTimes addTimes) { super(millisInFuture, countDownInterval); this.addTimes = addTimes; } 

Заменить textTime.setText (hms); To addTimes.writeTime (hms);

В заключение. В вашей основной деятельности. Внедрить метод AddTimes.

 public void writeTime(String time) { timeText.setText("Time - " + time); } 

Вместо этого

 TextView timeText = (TextView)findViewById(R.id.timeText); timeText.setText(intentString); 

ты нуждаешься в этом

 textTime= (TextView)findViewById(R.id.timeText); textTime.setText(intentString); timer = new CounterClass(10000, 1000); timer.start(); 

Как вы могли видеть, timeText изменился на textTime, который является переменной-членом класса, и ваш CounterClass использует его.

Скопируйте код так же, как и файл MainActivity.java.
Надеюсь, это сработает.

 public class MainActivity extends AppCompatActivity { TextView textTime; CountDownTimer timer; int intValue = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Bundle extras = getIntent().getExtras(); if(extras != null) { String intentString = extras.getString("TimeValue"); //if this is a plain number like 20, 45, 209, 8 intValue = Integer.valueOf(intentString); } textTime= (TextView)findViewById(R.id.timeText); timer = new CountDownTimer(intValue * 1000, 1000) { public void onTick(long millisUntilFinished) { intValue--; textTime.setText("Count Down: " + intValue); } @Override public void onFinish() {} } } timer.start(); } 

Вы можете просто использовать таймер обратного отсчета:

  new CountDownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { textField.setText("seconds remaining: " + millisUntilFinished / 1000); //here you can have your logic to set text to edittext } public void onFinish() { textField.setText("done!"); } }.start();