簡體   English   中英

Android 從 MainActivity 向 class 發送數據

[英]Android sending data to class from MainActivity

我正在創建一些 Android 應用程序,用戶在其中添加他的數據,應用程序將使用它。 為了工作,我需要從MainActivity.kt將數據寫入SomeClass.kt 我試圖用 Intent 來做,但它給了我 null (我猜,如果 Intent 沒有得到 startActivity 選項,它不會發送“putExtra”數據。或者可能是我寫 getIntent 錯誤,但它在第二個活動中提供數據。所以,問題是:我如何將數據從 MainActivity 發送到 SomeClassFile.kt?我的代碼:

MainActivity.kt

...
val name = findViewById<EditText>(R.id.editTextTextPersonName)
val sname = findViewById<EditText>(R.id.editTextTextPassword)

val i = Intent(this@MainActivity, DataClass::class.java)
val bundle = Bundle()
            bundle.putString("login", name.toString())
            bundle.putString("email", sname)
            bundle.putString("test", "hello world")
            myIntent.putExtra("MyPackage", bundle)

...

數據類.kt

class DataClass {

    val callerIntent = intent // <-- Error is here, 'Unresolved reference: intent'
    val packageFromCaller = callerIntent.getBundleExtra("MyPackage")
    val contact = packageFromCaller!!.getString("login")
    val email = packageFromCaller!!.getString("email")
    val test = packageFromCaller!!.getString("test")

}

在另一個活動中,使用與DataClass.kt中相同的代碼,我得到了我的文本(兩個來自 EditText 和“Hello world!”)

另外,我可以將我的信息寫入 .txt 文件並嘗試從 this.txt 文件中獲取 class 中的數據,但是當我嘗試在“類”文件中打開它時,出現“未解決的參考:openFileInput”錯誤.

您需要上下文或活動來獲取“意圖”的實例,但由於您使用單獨的 class 您可以使用 go -

  1. class DataClass(private val context: WeakReference<Context>) { val callerIntent get() = context.get()?.intent }

制作 DataClass 的 object -

val dataClassX = DataClass(WeakReference(this@YOUR_ACTIVITY_CLASS_NAME))

其中“this”是您的活動的引用/或在片段中使用 getActivity()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM