Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在kotlin的android共享首选项中存储2D数组?_Android_Kotlin_Multidimensional Array - Fatal编程技术网

如何在kotlin的android共享首选项中存储2D数组?

如何在kotlin的android共享首选项中存储2D数组?,android,kotlin,multidimensional-array,Android,Kotlin,Multidimensional Array,我想使用共享首选项存储2D数组 在这里,我尝试将一个活动中的2D数组存储在共享首选项中,之后我可以使用以前存储的2D数组将其加载到另一个活动中,但我无法将2D数组存储在共享首选项中 val _rMsg = intent.getStringArrayExtra(rKey) val inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val parent = _class1

我想使用共享首选项存储2D数组

在这里,我尝试将一个活动中的2D数组存储在共享首选项中,之后我可以使用以前存储的2D数组将其加载到另一个活动中,但我无法将2D数组存储在共享首选项中

   val _rMsg = intent.getStringArrayExtra(rKey)
    val inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    val parent = _class11_

    val _arData = arrayListOf<Array<String>>()
    val sharedPreferences = getSharedPreferences("shared pref", Context.MODE_PRIVATE)
    val gson = Gson()

    val backJson = sharedPreferences.getString("task_li",null)

    val type = TypeToken<ArrayList<>>() {}.type

    _arData.add(gson.fromJson(backJson,type))

    try {



        _arData.add(_rMsg)


        val edit = sharedPreferences.edit()
        val json = gson.toJson(_arData)
        edit.putString("task_li",json)
        edit.apply()


       for (i in _arData) {
           val cardView = inflater.inflate(R.layout._preset_layout, null)
           val mT = cardView.findViewById<TextView>(R.id._title__)
           mT.text = i[0].toString()
           parent.addView(cardView)
       }


   } catch (ex: Exception) {

   }
val\u rMsg=intent.getStringArrayExtra(rKey)
val inflater=getSystemService(Context.LAYOUT\u inflater\u SERVICE)作为LayoutInflater
val parent=_class11_
val _arData=arrayListOf()
val sharedPreferences=getSharedPreferences(“共享优先级”,Context.MODE\u PRIVATE)
val gson=gson()
val backJson=SharedReferences.getString(“task_li”,null)
val type=TypeToken(){}.type
_add(gson.fromJson(backJson,type))
试一试{
_添加数据(_rMsg)
val edit=SharedReferences.edit()
val json=gson.toJson(_arData)
edit.putString(“task_li”,json)
edit.apply()
对于(我在arData){
val cardView=充气机充气(右布局_预设_布局,空)
val mT=cardView.findViewById(R.id.\U title\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuux)
mT.text=i[0].toString()
parent.addView(cardView)
}
}捕获(例如:异常){
}

我们可以使用ObjectSerializer。[]这个很棒的类允许您对每种对象进行简单的序列化和反序列化,这样您就可以将它们作为字符串保存到共享对象中。您可以这样存储它:

    val mArrayTest = arrayListOf<Array<String>>()
    mArrayTest.add(arrayOf("1","3"))
    mArrayTest.add(arrayOf("2","4"))

    edit.putString("mArrayTest",ObjectSerializer.serialize(mArrayTest)).commit()
val mArrayTest=arrayListOf()
婚姻测试。添加(数组(“1”、“3”))
婚姻测试。添加(arrayOf(“2”、“4”))
edit.putString(“mArrayTest”,ObjectSerializer.serialize(mArrayTest)).commit()
这样做:

  val mTestStr = pref.getString("mArrayTest",null)
  if (mTestStr != null) {
        val mTestStr2 = ObjectSerializer.deserialize(mTestStr) as ArrayList<Array<String>>
        Toast.makeText(this, mTestStr2[0][1].toString(), Toast.LENGTH_SHORT).show()
     }
val mTestStr=pref.getString(“mArrayTest”,null)
if(mTestStr!=null){
val mTestStr2=对象序列化程序。反序列化(mTestStr)为ArrayList
Toast.makeText(this,mTestStr2[0][1].toString(),Toast.LENGTH\u SHORT.show())
}

如果需要将数据从一个屏幕传递到另一个屏幕,则无需将数据保存在共享首选项中。如果您使用kotlin,则使用jetpack导航将模型类从一个屏幕转移到另一个屏幕,或使用parceble类。如果需要在多个屏幕中使用相同的数据,并且不更新数据,那么您可以将此数据保存在共享屏幕中preference@NikunjPatel这是合理的。不过,如果要使用SharedReferences,可以将数组转换为逗号分隔的值字符串,然后保存它。我想存储在store中,所以我尝试先将其存储在Preferences中