Как я могу отправить данные от одного действия (намерения) к другому?
Я использую этот код для отправки данных:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
android
android-intent
Adham
источник
источник
user.getUserAccountId()+""
как это приведет к созданию ненужных объектов быть собранным. Подумайте об использованииString.valueOf(user.getUserAccountId)
илиInteger.toString(user.getUserAccountId)
вместо.Ответы:
Сначала получите намерение, с которого началась ваша деятельность, используя
getIntent()
метод:Если ваши дополнительные данные представлены в виде строк, вы можете использовать
intent.getStringExtra(String name)
метод. В твоем случае:источник
getIntent().getStringExtra("id");
чтобы получить строку идентификатораgetIntent()
метод. Я обновил ответ.В принимающей деятельности
источник
getStringExtra?
null
, вся выборка дополнений может быть пропущена. ИспользуяgetStringExtra
, вы в основном меняете его на сериюif(extras != null) { return extras.getString(name) }
. По одному на каждогоgetStringExtra
звонка. Эта опция проверитnull
один раз, и если да, то не будет читатьBundle
вообще. Кроме того,getStringExtra
вероятно , будет продолжать спрашиватьgetExtras
внутренне каждый раз. Таким образом, у вас просто есть больше вызовов функций.источник
Добавить вверх
Установить данные
Получить данные
источник
Вместо инициализации другого нового Намерения для получения данных, просто сделайте это:
источник
Если используется в FragmentActivity, попробуйте это:
Первая страница расширяет FragmentActivity
Во фрагменте нужно просто позвонить
getActivity()
сначала ,Вторая страница расширяет фрагмент :
источник
Если вы пытаетесь получить дополнительные данные фрагментами, вы можете попробовать использовать:
Поместите данные, используя:
Получить данные, используя:
источник
Вы можете получить любой тип дополнительных данных из намерения , независимо от того, является ли это объектом, строкой или любым типом данных.
и самое короткое решение :
источник
** Положите данные по намерению - **
** Получить данные по намерению - **
если мы отправим целочисленное значение по намерению. когда мы должны использовать 2-й параметр 0 в getIntent (). getIntExtra ("instituteId", 0), иначе мы не используем 0, тогда android выдает мне ошибку.
источник
Котлин
Первое занятие
Вторая деятельность
Предложение
Всегда помещайте ключи в постоянный файл для более управляемого пути.
источник
Просто предложение:
Вместо использования «id» или «name» в вашем i.putExtra («id» .....), я бы предложил, когда это имеет смысл, использовать текущие стандартные поля, которые можно использовать с putExtra (), т.е. Intent.EXTRA_something.
Полный список можно найти в Intent (Android Developers).
источник
Мы можем сделать это простыми средствами:
В FirstActivity:
В SecondActivity:
источник
Передайте намерение со значением в первом действии:
Получить намерение на второй деятельности; -
Обычно мы используем два метода, чтобы отправить значение и получить его. Для отправки значения, которое мы будем использовать,
intent.putExtra("key", Value);
и во время получения намерения на другое действие мы будем использовать,intent.getStringExtra("key");
чтобы получить данные намерения,String
или использовать другой доступный метод для получения других типов данных (Integer
,Boolean
и т. Д.). Ключом может быть любое ключевое слово, чтобы идентифицировать значение, значит, какое значение вы разделяете. Надеюсь, это сработает для вас.источник
Вы также можете сделать это
// положить значение в намерении
// получить значение из намерения
источник
Получение различных типов экстра из намерения
Для доступа к данным из Intent вы должны знать две вещи.
В классе Intent существуют разные методы для извлечения различных типов данных. Это выглядит так
Поэтому, если вы знаете тип данных вашей переменной, который вы установили в otherActivity, вы можете использовать соответствующий метод.
Пример получения строки в вашей активности из намерения
Список разных вариантов методов для разных dataType
Вы можете увидеть список доступных методов в Официальной документации о намерениях .
источник
источник
Я только что опубликовал ответ здесь , что охватывает эту тему в немного более подробно, в том числе некоторых альтернатив.
Использует Vapor API , новую платформу Android, вдохновленную jQuery, которую я написал для упрощения разработки Android. Посмотрите на пример в этом ответе о том, как вы можете легко передавать данные между активами.
Также демонстрируется
VaporIntent
, что позволяет вам связывать вызовы методов и использовать перегруженный.put(...)
метод:Вы можете легко передавать данные по всему вашему приложению с помощью Vapor API , так что, надеюсь, это будет полезно вам и другим пользователям при разработке приложений.
источник