Я далеко не спец в программировании. Делаю приложение для своих детей. Суть вопроса в следующем. Имеем задание, его надо решить, при выводе Activity с заданием запускается таймер от 0 и до момента решения.
Реализовано таким образом с помощью интернета:
public TextView timerValue;
private long startTime = 0L;
private Handler customHandler = new Handler();
long timeInMilliseconds = 0L;
long timeSwapBuff = 0L;
long updatedTime = 0L;
private Runnable updateTimerThread = new Runnable() {
public void run() {
timeInMilliseconds = SystemClock.uptimeMillis() - startTime;
updatedTime = timeSwapBuff + timeInMilliseconds;
int secs = (int) (updatedTime / 1000);
int mins = secs / 60;
secs = secs % 60;
int milliseconds = (int) (updatedTime % 1000);
timerValue.setText("" + mins + ":" + String.format("%02d", secs) );
customHandler.postDelayed(this, 0);
}
};
И вывожу время в text view text_time
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.universal);
startTime = SystemClock.uptimeMillis();
customHandler.postDelayed(updateTimerThread, 0);
timerValue = findViewById(R.id.text_time);
Останавливаю отсчёт при завершении условия в методе if
customHandler.removeCallbacks(updateTimerThread);
Много кода, но всё работает, время тикает и останавливается.
Вопрос следующий, по завершении задания, вызываю новое диалоговое окно в котором есть ещё один text view texttimerresult. Так вот вопрос, как туда передать остановленное значение таймера из text_time? Уже мозги закипают, всё перепробовал((( Помогите как это можно реализовать. Спасибо.
Вы устанавливаете в text_time
этот текст насколько я понял:
"" + mins + ":" + String.format("%02d", secs)
Я вижу два варианта решения:
textView
который находится в разметке диалога. textView
. Для того чтобы установить текст в textView разметки диалога, вы объявляете переменную которая будет этим виджетом, а дальше все так же как и в функции onCreate()
. Вот тут есть дополнительная информация по работе с таким видом диалогов. У вас тоже правильно, но вдруг понадобятся детали :)
Вы ведь как-то показываете диалог. Значит вам нужно сделать глобальную переменную как вы сделали это например с startTime
, выглядеть будет так:
private String result = "";
дальше вы при установке текста в text_time
присваиваете так же значение и для новой переменной, только в момент когда вы останавливаете таймер. У виджета textView есть такая функция как getText()
. У вас будет что-то типа такого:
result = timerValue.getText().toString();
теперь у вас есть глобальная переменная которая может быть отображена в виджете диалога. Так же можно передавать в функцию которая отображает диалог. Так как я не знаю что и как вы делаете в программе, то я предположу:
void showDialog(String data){
dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.previewdialog);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setCancelable(false);
dialog.show();
}
дальше вы берете либо присланную дату, либо глобальную переменную (все зависит от ваших желаний) и устанавливаете текст в textView диалога:
resTextView = dialog.findViewById(R.id.your_id)
resTextView.setText(data); // либо если не прислали data то установите result
и все. Сейчас проверить не могу, но если что-то не получится то дайте знать.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужна in-app клавиатура,чтобы спокойно мог из разных активити подключатьКод следующий:
друзьяДля работы моей программы требуется:
Могу ли я в своём Android-приложении брать данные из БД MySQl, расположенной на сервере?