Мне нужно передать некоторые переменные DialogFragment
, чтобы я мог выполнить действие. Eclipse предлагает использовать
Fragment#setArguments(Bundle)
Но я не знаю, как пользоваться этой функцией. Как я могу использовать его для передачи переменных в мой диалог?
Ответы:
С помощью
newInstance
И получить такие аргументы
См. Полный пример здесь
http://developer.android.com/reference/android/app/DialogFragment.html
источник
Раньше я отправлял некоторые значения из моего списка
Как отправить
Как получить внутри метода onCreate () DialogFragment
// Загрузка Котлина
// получить
источник
Итак, есть два способа передать значения из фрагмента / активности во фрагмент диалога: -
Способ 1:
Способ 2:
источник
в качестве общего способа работы с фрагментами, как заметил JafarKhQ, вы не должны передавать параметры в конструкторе, но с расширением
Bundle
.встроенный метод для этого в
Fragment
классе -setArguments(Bundle)
иgetArguments()
.По сути, вы создаете комплект со всеми своими
Parcelable
предметами и отправляете их.в свою очередь, ваш Фрагмент получит эти предметы
onCreate
и сотворит с ними магию.способ, показанный в
DialogFragment
ссылке, был одним из способов сделать это в многократно появляющемся фрагменте с одним конкретным типом данных и большую часть времени работает нормально, но вы также можете сделать это вручную.источник
В моем случае ни один из приведенных выше кодов не
bundle-operate
работает; Вот мое решение (не знаю, правильный это код или нет, но в моем случае он работает):источник
Просто я хочу показать, как сделать то, что сказал @JafarKhQ в Kotlin, для тех, кто использует kotlin, который может им помочь и сэкономить время темы:
поэтому вам нужно создать сопутствующий объект для создания новой функции newInstance
вы можете установить параметр функции, какой захотите. с помощью
вы можете установить свои аргументы.
Теперь вы можете использовать его
args.putSomthing
для добавления аргументов, которые вы указываете в качестве параметра в вашей функции newInstance.putString(key:String,str:String)
добавить строку, например, и т. д.Теперь, чтобы получить аргумент, вы можете использовать
arguments.getSomthing(Key:String)
=> likearguments.getString("1")
вот полный пример
Теперь, как создать свой диалог, вы можете сделать что-то подобное в другом классе.
как это например
источник