gson 如何访问对象内的共享首选项

j8ag8udp  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(130)

我正在尝试访问我的gson json对象中的共享首选项。我不知道如何访问它。这是我的代码,用于访问片段中的共享首选项。
第一个
这是我的对象类。我正在尝试访问calculateTheDistance函数中的共享首选项。当我键入requireContext()时出现错误。

val PREFS_FILENAME = "com.app.app.prefs"
    private var loclistsDT= mutableListOf<LatLng>()

   fun calculateTheDistance(locationList: MutableList<LatLng>): String {

        val sharedPreferences = requireContext().getSharedPreferences(PREFS_FILENAME, 0)
        val gson = Gson()
        val json = sharedPreferences.getString("loclists", "")
        val type = object : TypeToken<MutableList<LatLng>>() {}.type

        if (json == null || json == "")
            loclistsDT = mutableListOf<LatLng>()
        else
            loclistsDT = gson.fromJson(json, type)

 if(locListsDT.size > 1){
            val meters =
                SphericalUtil.computeDistanceBetween(locListsDT.first(), locListsDT.last())
            val kilometers = meters / 1000
            return DecimalFormat("#.##").format(kilometers)
        }
        return "0.00"
    }

} ```
rekjcdws

rekjcdws1#

在您的函数calculateTheDistance中传递活动的上下文,如果您无法访问application,这是如何

fun calculateTheDistance(mContext : Context , locationList: MutableList<LatLng>): String {

        val sharedPreferences = mContext.getSharedPreferences(PREFS_FILENAME, 0)
        val gson = Gson()
        val json = sharedPreferences.getString("loclists", "")
        val type = object : TypeToken<MutableList<LatLng>>() {}.type

        if (json == null || json == "")
            loclistsDT = mutableListOf<LatLng>()
        else
            loclistsDT = gson.fromJson(json, type)

 if(locListsDT.size > 1){
            val meters =
                SphericalUtil.computeDistanceBetween(locListsDT.first(), locListsDT.last())
            val kilometers = meters / 1000
            return DecimalFormat("#.##").format(kilometers)
        }
        return "0.00"
    }

}

使用此方法时,如果来自片段,则在参数中添加requireContext,如果来自活动,则添加this

相关问题