Страницы

Поиск по вопросам

пятница, 11 января 2019 г.

Как сравнить числовые данные, переданные с помощью нескольких интентов в другое активити

Есть активити1, которое передает в активити2 для счетчика количество миллисекунд. Количество миллисекунд может быть разным (в зависимости от того, какая кнопка нажата на активити1).Счетчик в активити2 должен принимать эти значение миллисекунд.
В активити1 код для передачи данных такой:
int SEKOND;
@Override public void onClick(View v) { switch (v.getId()){ case R.id.button_dif SEKOND = 5000; Intent intent = new Intent(this,Activity2.class); intent.putExtra("sekondDif",SEKOND); startActivity(intent); break; case R.id.button_is: SEKOND = 50000; Intent intent1 = new Intent(this,Activity2.class); intent1.putExtra("sekondIs",SEKOND); startActivity(intent1); break;
} }
В ативити2 код получения интентов такой:
Bundle extras = getIntent().getExtras();
int id0 = extras.getInt("sekondDif"); int id1 = extras.getInt("sekondIs");
Т.е. число передано и извлечено.
Далее есть счетчик, вместо id которого нужно поставить либо данные из id0 либо из id1, в зависимости от того, какой интент был получен:
new CountDownTimer(id, 1000) {}
Сама логика такая: на активити1 есть разные button. Если кликнуть по button1, то при переходе на активити2 в счетчике должно быть выставлено одно количество миллисекунд, если кликнуть на активтити1 по button2, то в счетчике должно быть выставлено другое количество миллисекунд.
Помогите, пожалуйста, связать эти условия (секунды счетчика на втором активити и выбор кнопки на первом активити ).


Ответ

Если ваша проблема в том, что вы не знаете во второй активити какое именно значение было передано из первой, то вы можете, при вытаскивании данных из интента указывать значение по умолчанию для отсутствующих данных и проверяя ваши переменные второй активити на предмет равенства значения по умолчанию вызывать метод нужный передавая туда нужную переменную.
Bundle extras = getIntent().getExtras();
//зададим -1 как значение по умолчанию. //им будет инициализированна переменная, если в Bundle нет искомого ключа. //если этот аргумент не указать и значения по ключу нет, то присвоится 0 int id0 = extras.getInt("sekondDif", -1); int id1 = extras.getInt("sekondIs", -1);
if(id0 != -1) { //значит получено "sekondDif" } else if(id1 != -1) { //значит получено "sekondIs" }

Также можно проверять есть ли определённый ключ в Bundle методом contains(String key)

Комментариев нет:

Отправить комментарий