Как передать значение с одного экрана на предыдущий?
Рассмотрим этот случай: у меня два занятия. На первом экране есть по одной TextView
кнопке, а на втором - по одной EditText
и кнопке.
Если я нажму первую кнопку, произойдет переход ко второму действию, и здесь пользователь должен будет что-то ввести в текстовое поле. Если он нажимает кнопку на втором экране, значения из текстового поля должны переместиться в первое действие, и оно должно отображаться в первом действии TextView
.
android
android-activity
Кумар
источник
источник
Ответы:
Чтобы зафиксировать действия, выполняемые в одном Activity, в другом, требуется три шага.
Запустите дополнительное действие (действие «Редактировать текст») в качестве вспомогательного действия, используя
startActivityForResult
из основного действия.В рамках подактивности, вместо того, чтобы просто закрывать Activity, когда пользователь нажимает кнопку, вам необходимо создать новое намерение и включить введенное текстовое значение в его дополнительный пакет. Чтобы передать его обратно родительскому вызову
setResult
перед вызовом,finish
чтобы закрыть вторичное действие.Последний шаг - это вызов Activity: Override
onActivityResult
для прослушивания обратных вызовов из текстовой записи Activity. Получите дополнительную информацию от возвращенного Intent, чтобы получить текстовое значение, которое вы должны отображать.источник
new Intent(null);
было «слишком неоднозначным», и мне пришлось изменить его наnew Intent();
.Есть несколько способов, которыми вы можете получить доступ к переменным или объекту в других классах или Activity.
A. База данных
Б. разделяют предпочтения.
C. Сериализация объекта.
D. Класс, который может хранить общие данные, может называться Common Utilities, это зависит от вас.
E. Передача данных через намерения и интерфейс Parcelable.
Это зависит от потребностей вашего проекта.
A. База данных
SQLite - это база данных с открытым исходным кодом, встроенная в Android. SQLite поддерживает стандартные функции реляционной базы данных, такие как синтаксис SQL, транзакции и подготовленные операторы.
Учебники - http://www.vogella.com/articles/AndroidSQLite/article.html
Б. Общие настройки
Предположим, вы хотите сохранить имя пользователя. Итак, теперь будет две вещи: ключевое имя пользователя, значение- значение.
Как хранить
Используя putString (), putBoolean (), putInt (), putFloat (), putLong (), вы можете сохранить желаемый dtatype.
Как получить
http://developer.android.com/reference/android/content/SharedPreferences.html
C. Сериализация объекта
Сериализация объекта используется, если мы хотим сохранить состояние объекта, чтобы отправить его по сети, или вы также можете использовать его для своих целей.
Используйте java beans и сохраните в нем как одно из его полей и используйте для этого геттеры и сеттеры
JavaBeans - это классы Java, у которых есть свойства. Думайте о свойствах как о частных переменных экземпляра. Поскольку они являются частными, единственный способ получить к ним доступ извне своего класса - это использовать методы в классе. Методы, которые изменяют значение свойства, называются методами установки, а методы, которые получают значение свойства, называются методами получения.
Установите переменную в вашем почтовом методе, используя
Затем используйте сериализацию объекта для сериализации этого объекта и десериализации этого объекта в другом классе.
При сериализации объект может быть представлен как последовательность байтов, которая включает данные объекта, а также информацию о типе объекта и типах данных, хранящихся в объекте.
После того, как сериализованный объект был записан в файл, он может быть прочитан из файла и десериализован, то есть информация о типе и байты, которые представляют объект и его данные, могут быть использованы для воссоздания объекта в памяти.
Если вам нужен учебник для этого, перейдите по этой ссылке
http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html
Получить переменную в других классах
D. CommonUtilities
Вы можете сами создать класс, который может содержать общие данные, которые вам часто нужны в вашем проекте.
Образец
E. Передача данных через намерения
Пожалуйста, обратитесь к этому руководству для этой опции передачи данных.
http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/
источник
тебе не обязательно ...
Просто вызовите newIntent () из второго действия
Добавить данные для возврата
Продолжайте с setResult
А потом можно закончить
источник
startActivityForResult ()
А вот ссылка из SDK с дополнительной информацией:
http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen
и прокрутите вниз до раздела "Возврат результата с экрана"
источник
Я часто использую статические переменные в вызывающей активности со статическими методами установки для их установки.
Таким образом, я могу изменять значения любого действия по своему желанию, независимо от точного потока управления между различными действиями.
Обратите внимание, что этот трюк можно использовать только в том случае, если вас не интересует создание экземпляров более чем одной копии одного и того же действия (класса) в приложении, но я обнаружил, что это проще всего реализовать, и я использую его чаще всего. .
источник
Лучший способ сделать это - поместить переменную в общий класс, который определен вне области видимости.
внутри вашего кода (например, OnButtonClick и т. д.)
внутри кода
@Override public void onActivityResult (int requestCode, int resultCode, данные намерения) {if (requestCode == Keys.PICK_CONTACT) {if (resultCode == Activity.RESULT_OK) {Uri contactData = data.getData ();
источник