Как передать данные между двумя классами PreferenceFragmentCompat? - PullRequest
0 голосов
/ 14 января 2020

Я хочу передать данные типа id в другой класс PreferenceFragmentCompat , чтобы я мог настроить эту указанную группу c с идентификатором группы. Для перехода между 2 фрагментами предпочтений вы указываете приложение: фрагмент в файле предпочтений xml или с помощью кода и задаете аргументы:

val bundle = Bundle()
bundle.putString("id", "group id")

val preference = Preference(context).apply {
    title = "group name"
    key = "key"
    fragment ="io.foodless.fragments.preferences.GroupPreference"
    arguments = bundle
}

Но в GroupPreference class Когда я пытаюсь получить доступ к аргументу id возвращает ноль

class GroupPreference:PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.group_preference,rootKey)

        val groupId = arguments?.getString("id")
        Log.d("debug","data $groupId")
    }
}

1 Ответ

0 голосов
/ 14 января 2020

В Preference.getExtras () говорится

Возвращает дополнительный объект Bundle, связанный с этим предпочтением, создавая новый Bundle, если в данный момент его нет. Вы можете использовать это, чтобы получить и установить отдельные дополнительные пары ключ / значение.

Поэтому вместо создания нового пакета я назвал preference.getExtras (), и это сработало:

val preference = Preference(context).apply {
    title = "group name"
    key = "key"
    fragment ="io.foodless.fragments.preferences.GroupPreference"

    val bundle = extras
    bundle.putString("id", "group id")
}
...