【问题标题】:Preferences library is causing E/libc & E/Pref errors首选项库导致 E/libc & E/Pref 错误
【发布时间】:2020-07-20 05:45:28
【问题描述】:

我正在使用 MVVM 和改造构建一个天气应用程序,我最近添加了一个 PreferencesFragmentCompat 子类来使用首选项库实现一些用户设置。这样做后,我的应用程序将无法运行,并且我不断收到这几行错误:

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

我不知道这些是什么,我在堆栈或谷歌上找不到任何具体的答案。没有迹象表明是什么导致了错误,所以我不知道我是否做错了什么或者如果是图书馆问题。有什么想法吗?

这是我从 xml 资源文件添加首选项的 SettingsFragment:

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!!
    }
}

【问题讨论】:

  • 你用的是androidx吗?如果是这样,你在使用这个库吗?实现 ​'​androidx.preference:preference:1.1.0​'​
  • @Ossy33 是的,我正在使用 androidX 但我正在使用这个库 implementation 'androidx.preference:preference-ktx:1.1.0'

标签: android-studio sharedpreferences logcat preferencefragment


【解决方案1】:

在进行更多研究后,我设法找到了解决该问题的方法。首先,我注释掉了与首选项库(以及库本身)相关的所有代码,然后再次运行该应用程序。运行成功,没有任何错误,因此将其范围缩小到 androidx.preference:preference-ktx:1.1.0 库本身,因为我的代码经过审查并且找不到任何问题。浏览preference docs 我想我可以尝试一个可能已经解决了这个问题的 beta 或 alpha 版本。你瞧,在使用androidx.preference:preference-ktx:1.1.0-beta01 beta 版本并取消注释相关代码后,一切都恢复了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2021-09-12
    相关资源
    最近更新 更多