Я часами искал и пытался найти решение, но в духе.Итак, вот мой первый вопрос по stackoverflow.В течение многих лет я мог обходиться без необходимости задавать свои собственные вопросы из-за огромного количества тем.
Пожалуйста, будьте добры ко мне, если я что-то не так делаю.Я сделаю все возможное, чтобы лучше задавать вопросы.
Моя проблема в том, что он не будет хранить или считывать данные из предпочтений.Это говорит о том, что они не существуют.Я взял пример кода из Google для экрана настроек.Внутри много фрагментов.Внутри одного из этих фрагментов я ловлю щелчок предпочтения и хочу изменить с ним значение одного из других предпочтений.
После того, как вы найдете мой код.
Проблема, на мой взгляд, заключается вonPreferenceTreeClick элемента AlveolPreferencesFragment.
Спасибо за всю вашу помощь и всю помощь, которую вы мне оказали, прежде чем не знали, что сделали:))
Alveol_Preferences XML
<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
app:title="@string/heart_alveol">
<EditTextPreference
app:key="latitude"
app:dialogTitle="@string/latitude_summary"
app:useSimpleSummaryProvider="true"
app:title="@string/latitude"
app:defaultValue="-34.0"/>
<EditTextPreference
app:key="longitude"
app:dialogTitle="@string/longitude_summary"
app:useSimpleSummaryProvider="true"
app:title="@string/longitude"
app:defaultValue="151.0"/>
<Preference
app:key="gpsheart"
app:title="@string/gpsheart"
app:summary="@string/gpsheart_summary"/>
</PreferenceCategory>
</androidx.preference.PreferenceScreen>
Класс AlveolPreferencesFragment
class AlveolPreferencesFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.alveol_preferences, rootKey)
}
override fun onPreferenceTreeClick(preference: Preference): Boolean {
return when (preference.key) {
"gpsheart" -> {
var sharedPref : SharedPreferences? = activity?.getPreferences(Context.MODE_PRIVATE)
val editor = sharedPref?.edit()
editor?.putString("latitude", "Test").apply()
val text = sharedPref?.getString("longitude","Longitude doesn't exist")
val duration = Toast.LENGTH_SHORT
val toast = Toast.makeText(context, text, duration)
toast.show()
true
}
else -> {
super.onPreferenceTreeClick(preference)
}
}
}
Класс AlveolPreferencesFragment находится внутри этого class SettingsActivity : AppCompatActivity()
Это было предварительно настроено Google, и у меня есть предположение, что этоэто довольно сложно.Но я не знаю, может быть, я ошибаюсь.
Дополнительный вопрос
Этот вопрос стоит первым, если вы хотите помочь мне здесь.Внутри OnPreferenceTreeClick
я хочу получить последнее известное местоположение.Это уже работает из моего кода.Единственная проблема в том, что я не могу поместить fusedLocationClient
в класс.Это не сработает там.
Потому что внутри этого вызова:
fusedLocationClient = LocationServices.getFusedLocationProviderClient(activity)
активность возвращает FragmentActivity? Но для этого требуется активность.
Так как я могу получить настройки SettingsActivity внутри этой FragmentActivity?
Может быть, что-то с companion object
?Понятия не имею.
Спасибо за помощь.