Я создаю новое приложение, используя все новые методы Jetpack. Я создал свое приложение с помощью мастера «Действия с вкладками» с помощью вкладок панели действий (с ViewPager), поскольку у моего приложения есть два родственных представления с одинаковыми данными.
Я хотел использовать Jetpack Navigation для навигации, но не смог настроить его на работу с вкладками. Приблизительно после недели попыток найти что-то по теме, я нашел всего несколько сообщений вроде этого:
Android Jetpack Navigation с ViewPager и TabLayout
Это было слишком мало для продолжения, поэтому я отложил его в сторону и попытался реализовать меню настроек с помощью PreferenceFragmentCompat.
Опять же, я ничего не могу найти о том, как загрузить Настройки как PreferenceFragmentCompat из меню.
Я следовал документации для PreferenceScreen: https://developer.android.com/guide/topics/ui/settings/
<?xml version="1.0" encoding="utf-8"?>
<!--File: res/xml/fragment_settings.xml-->
<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
app:key="notifications"
app:title="Enable message notifications"/>
<Preference
app:key="feedback"
app:title="Send feedback"
app:summary="Report technical issues or suggest new features"/>
</androidx.preference.PreferenceScreen>
Я также создал:
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(fragment_settings, rootKey)
}
}
Но я понятия не имею, как подключить его к меню:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
val id = item.itemId
if (id == R.id.action_settings) {
return true
}
return super.onOptionsItemSelected(item)
}
Я видел примеры, которые загружают настройки в качестве Действия, но у меня есть Фрагмент, который кажется способом, предложенным для этого, учитывая, что более новый Jetpack Navigation хочет одно действие.
Возможно ли это? Кто-нибудь знает пример? Я ненавижу тратить еще одну неделю, только чтобы обнаружить, что это невозможно, поэтому было бы полезно знать, что я иду в неправильном направлении.
Спасибо.