Android предпочтений во фрагменте вкладки - PullRequest
0 голосов
/ 17 марта 2020

В моем приложении три вкладки (фрагменты), одна из которых должна быть вкладкой настроек. Я хотел бы использовать библиотеку настроек AndroidX для этой вкладки настроек.
Я могу открыть вкладку настроек и изменить настройки, однако, как только я однажды открыл вкладку настроек, нижняя панель навигации больше не работает. Когда я закрываю и перезапускаю приложение, настройки сохраняются. Я думаю это потому, что .replace(android.R.id.content, SettingsFragmentCompat()) заменяет всю активность, включая нижнюю панель навигации.
Как правильно загрузить фрагмент предпочтения во фрагмент вкладки?

SettingsFragment.kt ( фрагмент вкладки)

package net.htlgrieskirchen.jheschl17.hypernote.ui.settings

import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import net.htlgrieskirchen.jheschl17.hypernote.R

class SettingsFragment : Fragment() {

    private lateinit var view1: View

    override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
    ): View? {
        view1 = inflater.inflate(R.layout.fragment_settings, container, false)

        requireActivity().supportFragmentManager
            .beginTransaction()
            .replace(android.R.id.content, SettingsFragmentCompat())
            .commit()

        return view1
    }

}



SettingsFragmentCompat.kt (android шаблон)

package net.htlgrieskirchen.jheschl17.hypernote.ui.settings

import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
import net.htlgrieskirchen.jheschl17.hypernote.R

class SettingsFragmentCompat : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.preferences, rootKey)
    }

}

1 Ответ

0 голосов
/ 17 марта 2020

Я решил проблему, изменив элемент root файла макета, соответствующий параметру SettingsFragment, на androidx.drawerlayout.widget.DrawerLayout с идентификатором view_settings и изменив .replace(android.R.id.content, SettingsFragmentCompat()) на .replace(R.id.view_settings, SettingsFragmentCompat()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...