Как правильно передавать данные между Activity?

412
09 марта 2017, 22:07

Сейчас я использую такой способ передачи:

Intent intent;
    intent = new Intent(this, DegSet.class);
    intent.putExtra("TypeDeg", FLAG_GET_TIME);
    startActivityForResult(intent, FLAG_GET_TIME);

Потом достаю их:

    Intent intent = getIntent();
    _typedeg = intent.getIntExtra("TypeDeg", 0);

Но где-то увидел, что этот способ устарел и чем-то опасен в плане потери передаваемых данных. Вопрос: действительно ли такой способ устарел и опасен? Тогда, как правильно?

Answer 1

Можно сделать статический метод в классе DegSet, в который в качестве параметров будет передаваться FLAG_GET_TIME.

Тогда литерал "TypeDeg" можно инкапсулировать в константу в классе DegSet. Благодаря этому, классы, которые будут работать с DegSet, не обязаны знать с каким именно именем надо класть FLAG_GET_TIME, что поможет избежать ошибок в случае неправильного ввода имени (например, "Typedeg", вместо "TypeDeg").

Пример реализации:

Класс DegSet

private static final String EXTRA_FLAG_GET_TIME = "TypeDeg";
public static Intent newIntent(Context context, int flagGetTime) {
    Intent intent = new Intent(context, DegSet.class);
    intent.putExtra(EXTRA_FLAG_GET_TIME, flagGetTime);
    return intent;
}

Получение EXTRA в DegSet

Получение extra почти не изменилось, вместо литерала теперь стоит константа

Intent intent = getIntent();
_typedeg = intent.getIntExtra(EXTRA_FLAG_GET_TIME, 0);

Класс, использующий DegSet

Intent intent = DegSet.newIntent(this, FLAG_GET_TIME);
startActivityForResult(intent, FLAG_GET_TIME);
READ ALSO
Блокировка записи в ConcurrentHashMap

Блокировка записи в ConcurrentHashMap

Есть ConcurrentHashMap которая имеет следующий вид:

251
InteliJ IDEA минимальная версия android

InteliJ IDEA минимальная версия android

Как в InteliJ IDEA выбрать минимальную версию андроида в проекте?

283
Методы DAO срабатывают лишь один раз

Методы DAO срабатывают лишь один раз

Внес исправления в предыдущее обращение и сейчас обратил внимание что мои методы работы с ДАО отрабатывают только один разПрошу объяснить...

349
Как через setText присвоить textView число?

Как через setText присвоить textView число?

Необходимо конвертировать его в строку?

303