【发布时间】:2018-08-26 21:48:22
【问题描述】:
我是 Kotlin 的新学习者,我正在尝试为我的应用程序创建一个设置活动,我希望这个活动将它的值传递给其他活动。我尝试了不同的代码,但它们都不起作用,我尝试制作一个共享首选项文件,但我不知道如何编写代码
要清楚,我想将字体类型从设置 [main] 活动传递到另一个活动,但我不知道如何!
我的主要活动
val preferences = applicationContext.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE)
val prefEditor = preferences.edit()
val fonts = arrayOf("Data1", "Data2", "Data3", "Data4")
val adapterCountry = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fonts)
val spinner = findViewById(R.id.spinner) as Spinner
spinner.adapter = adapterCountry
spinner.setSelection(preferences.getInt("position", 0))
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
spinner.setSelection(position)
prefEditor.putInt("position", position)
prefEditor.apply()
val selecteditem = parent.getItemAtPosition(position).toString()
if (selecteditem == "Data1"){
}
}
override fun onNothingSelected(parent: AdapterView<*>) {
}
}
这是我的主要 2 活动:
class Main2Activity : AppCompatActivity() {
internal lateinit var sh : SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
sh = PreferenceManager.getDefaultSharedPreferences(this)
}
override fun onStart() {
super.onStart()
if (sh.getBoolean("positon", false)){
when(sh.getInt("position", 0)){
0->{
t1.typeface = Typeface.createFromAsset(assets, "andlso.ttf")
}
1->{
t1.typeface = Typeface.createFromAsset(assets, "frsspbl")
}
}
}
}
我在这里找到了这个问题的解决方案 enter link description here
【问题讨论】:
-
尝试将this answear重写为Kotlin。
-
如果只是从那个活动到另一个活动并且它们是链接的,请考虑只传递一个额外的意图。否则,如果您确实需要它在应用程序范围内使用首选项是一个好方法:developer.android.com/training/data-storage/shared-preferences
标签: android android-layout kotlin