Библиотека настроек вызывает ошибки E / lib c & E / Pref - PullRequest
2 голосов
/ 08 апреля 2020

Я создаю приложение погоды, используя MVVM и модернизацию, и недавно я добавил подкласс PreferencesFragmentCompat, чтобы реализовать некоторые пользовательские настройки, используя lib настроек. После этого мое приложение не запустится, и я получаю несколько строк ошибок:

2020-04-08 00:54:12.346 18079-18079/? E/de.flogaweathe: Unknown bits set in runtime_flags: 0x8000
2020-04-08 00:54:12.410 18079-18079/com.nesoinode.flogaweather E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
2020-04-08 00:54:12.421 18079-18110/com.nesoinode.flogaweather E/Perf: Fail to get file list com.nesoinode.flogaweather
2020-04-08 00:54:12.421 18079-18110/com.nesoinode.flogaweather E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array
2020-04-08 00:54:12.421 18079-18110/com.nesoinode.flogaweather E/Perf: Fail to get file list oat
2020-04-08 00:54:12.422 18079-18110/com.nesoinode.flogaweather E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array

Я понятия не имею, что это такое, и я не могу найти конкретные c ответы в стеке или в Google. Нет никаких указаний на то, что вызывает ошибку, поэтому я не могу понять, делаю ли я что-то неправильно или это проблема библиотеки. Любые идеи?

Вот фрагмент настроек, где я добавляю настройки из файла ресурсов xml:

class SettingsFragment : PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        addPreferencesFromResource(R.xml.settings_prefs)
    }
}

А вот как я читаю некоторые значения из sharedPrefs:

class UnitProviderImpl(context: Context) : UnitProvider {

    private val appContext = context.applicationContext
    private val preferences:SharedPreferences
        get() = PreferenceManager.getDefaultSharedPreferences(appContext)

    override fun getUnitSystem(): String {
        val selectedUnitSystemName = preferences.getString(UNIT_SYSTEM_KEY,
            UnitSystem.SI.name.toLowerCase(Locale.ROOT))
        return selectedUnitSystemName!!
    }
}
...