日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android如何导入活动,关于android:如何将活动值传递给另一个活动(Kotlin)

發布時間:2023/12/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。