android如何导入活动,关于android:如何将活动值传递给另一个活动(Kotlin)
我是Kotlin的新手,我正在嘗試為我的應用進行設置活動,我希望該活動將其價值傳遞給其他活動。 我嘗試了不同的代碼,但沒有一個起作用,我嘗試制作一個共享的首選項文件,但我不知道如何編寫代碼
要清楚,我想將字體類型從設置[main]活動傳遞到另一個活動,但我不知道如何!
我的主要活動
val preferences = applicationContext.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE)
val prefEditor = preferences.edit()
val fonts = arrayOf("Data1","Data2","Data3","Data4")
val adapterCountry = ArrayAdapter(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")
}
}
}
}
我在這里找到了這個問題的解決方案
在此處輸入鏈接說明
嘗試將此回答改寫為Kotlin。
如果只是從那個活動到另一個活動而已鏈接在一起,則可以考慮僅傳遞一個意圖。 否則,如果您確實需要在應用程序范圍內使用首選項是個好方法:developer.android.com/training/data-storage/shared-preferences
因此,基本上您想將Int中的數據(字體類型)從一個活動傳遞到另一個活動。 您可以使用SharedPrefenrences,但在Android中不建議使用。
我給您2個解決方案:
1.使用捆綁
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fonts = arrayOf("Data1","Data2","Data3","Data4")
val adapterCountry = ArrayAdapter(this, android.R.layout.simple_list_item_1, fonts)
val spinner = findViewById(R.id.spinner) as Spinner
spinner.adapter = adapterCountry
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView, view: View, position: Int, id: Long) {
spinner.setSelection(position)
val selecteditem = parent.getItemAtPosition(position).toString()
if (selecteditem =="Data1") {
}
// Start another activity with position
val intent = Intent(this@MainActivity, Main2Activity::class.java)
intent.putExtra("position", position);
startActivity(intent)
}
override fun onNothingSelected(parent: AdapterView) {
}
}
}
}
Main2Activity.kt
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val position = intent.getIntExtra("position", 0)
}
}
2.使用SharedPreferences
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val preferences = PreferenceManager.getDefaultSharedPreferences(this)
val fonts = arrayOf("Data1","Data2","Data3","Data4")
val adapterCountry = ArrayAdapter(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)
val selecteditem = parent.getItemAtPosition(position).toString()
if (selecteditem =="Data1"){
}
// Save position to prefs.
preferences.edit()
.putInt("position", position)
.apply()
}
override fun onNothingSelected(parent: AdapterView) {
}
}
}
}
Main2Activity.kt
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Get position from prefs.
val position = PreferenceManager.getDefaultSharedPreferences(this).getInt("position", 0)
}
}
您能告訴我如何在其他屏幕上獲取數據嗎? 在這種情況下,只需使用intent.getIntExtra("position", 0)或intent.getIntExtra("position1", 0)。
Intent已經具有將信息從一個活動發送到另一個活動的功能。
// in your first activity:
val intent = Intent(context, Main2Activity::class.java)
.putExtra("position", position)
startActivity(intent)
// in your second activity, you can fetch the extras like this:
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val position = intent.getIntExtra("position", -1)
}
}
我不建議使用共享首選項在屏幕之間傳遞事件,因為如果您的應用在崩潰之前無法清理,就可能陷入尷尬的狀態,從而無法清除其共享的偏好狀態。
它說上下文沒有分類器
總結
以上是生活随笔為你收集整理的android如何导入活动,关于android:如何将活动值传递给另一个活动(Kotlin)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牙齿烤瓷多少钱啊?
- 下一篇: 为何郭敬明执导的《小时代》电影,被定义为