Передача значений из фрагмента в другой вид деятельности - PullRequest
0 голосов
/ 26 января 2019

У меня есть DialogFragment, у которого есть listView в качестве контейнера.Я настроил OnItemClickListener в listView.

Как я могу получить значение, когда пользователь касается элемента, передает его другому действию, а затем сохраняет это значение в переменной?Мне нужно установить таймер обратного отсчета в зависимости от того, какой элемент будет выбран.На самом деле может отображаться только простое тостовое сообщение с позицией элемента.

Как примечание, действие, которому будет передано значение, не является действием фрагмента.

Я думал о Bundle, но имеюНедостаток знаний о программировании - это боль даже после прочтения документации на сайте Google.

на MainActivy, вот как я устанавливаю таймер:

new CountDownTimer(30000, 1000) {

        public void onTick(long millisUntilFinished) {
            String elapsedTime = String.valueOf(millisUntilFinished / 1000);
            timer.setText(elapsedTime);
        }
        public void onFinish() {
            timer.setText(R.string.text);
        }
    }.start();
}

Пример:

Если пользователь касается элемента 1, таймер получает значение 15 минут и т. Д....

Пожалуйста, ведите меня, спасибо.

1 Ответ

0 голосов
/ 26 января 2019

Итак, вы хотите передать данные из фрагмента в активность.Вот как вы это делаете.

Передача данных из фрагмента в операцию:

final Intent intent = new Intent(getActivity(), ActivityName.class);
intent.putExtra("counter-value", counterValue);
getActivity().startActivity(intent);

Чтение значения в операции:

final Bundle extras = getIntent().getExtras();
if(extras != null) {
    final int counterValue = extras.getInt("counter-value", -1);
    showCountDown(counterValue);
}

Теперь передайте значение в countdowntimer.

private void showCountDown(final int counterValue) {
    new CountDownTimer(counterValue, 1000) {

        public void onTick(long millisUntilFinished) {
            String elapsedTime = String.valueOf(millisUntilFinished / 1000);
            timer.setText(elapsedTime);
        }
        public void onFinish() {
            timer.setText(R.string.text);
        }
    }.start();
}
...