kotlin 如何将变量从Home Activity传输到另一个项目文件

1tu0hz3e  于 2023-03-13  发布在  Kotlin
关注(0)|答案(1)|浏览(203)

我的HomeActivity中是否有var searchText = et_search_field?.text?.toString()?我需要将$search文本传递到“https://t.supersimplesearch1.com/searchm?q=$searchText&n=9250”但我无法以任何方式完成此操作,因为我无法在另一个类中调用此变量

private fun onSearchClicked() {
    val searchText = et_search_field?.text?.toString()

    if (!searchText.isNullOrEmpty()) {
        if (searchText.contains(".") && !searchText.contains(" ")) {
            requestToWeb =
                if (searchText.startsWith("http://") ||
                    searchText.startsWith("https://"))
                    searchText
                else "http://$searchText"

            createHttpTask(requestToWeb!!)
                .addOnSuccessListener {
                    isSiteAvailability = true
                    startActivity(
                        BrowserActivity.newIntent(
                            this,
                            requestToWeb,
                            isSiteAvailability = isSiteAvailability
                        )
                    )
                }
                .addOnFailureListener {
                    requestToWeb = requestToWeb!!.replace("http://", "")
                    isSiteAvailability = false
                    if (it.message == "Error: 301") {
                        requestToWeb = "https://$requestToWeb"
                        createHttpTask(requestToWeb!!)
                            .addOnSuccessListener {
                                isSiteAvailability = true
                                startActivity(
                                    BrowserActivity.newIntent(
                                        this,
                                        requestToWeb,
                                        isSiteAvailability = isSiteAvailability
                                    )
                                )

                            }
                            .addOnFailureListener {
                                requestToWeb = requestToWeb!!.replace("https://", "")
                                isSiteAvailability = false
                                startActivity(
                                    BrowserActivity.newIntent(
                                        this,
                                        requestToWeb,
                                        isSiteAvailability = isSiteAvailability
                                    )
                                )
                            }

                    } else {
                        startActivity(
                            BrowserActivity.newIntent(
                                this,
                                requestToWeb,
                                isSiteAvailability = isSiteAvailability
                            )
                        )
                    }
                }
        } else {
            isSiteAvailability = false
            requestToWeb = searchText
            startActivity(
                BrowserActivity.newIntent(
                    this,
                    requestToWeb,
                    isSiteAvailability = isSiteAvailability
                )
            )
        }
    } else {
        Toast.makeText(this, getString(R.string.search_empty_error), Toast.LENGTH_SHORT).show()
    }
}

这是家庭活动
我全球化了这个变量,但这也没有帮助

kq0g1dla

kq0g1dla1#

  • 您可以在Intent中将数据从一个Activity发送到另一个Activity

瓦尔intent =意图(此,其他活动::class.java)意图。putExtra(“我的密钥”,您的数据)开始活动(意图)
您可以将实现Serializable的数据放入JSON中,或者您可以将JSON中的数据序列化/反序列化以获得String,例如GSON。

  • 您可以使用EventBus

使用Otto https://square.github.io/otto/或GreenRobot https://github.com/greenrobot/EventBus,您在总线和其他文件中的活动发布数据可以监听总线并接收数据。

  • 全球价值

您可以创建全局变量

object MyGlobalData {
   var name = "toto
}

随处使用

MyGlobalData.name = "titi"
  • 您可以使用监听器

使用方法创建接口,您的活动将调用它们,而其他类将侦听

interface MyHomeActivityListener {
    fun doSomeAction(val someData: String)
}

在您的活动中

var activityListener : MyHomeActivityListener? = null

以及何时发送数据

activityListener?.doSomeAction(YOUR_DATA)

在另一个班级

refToYouractivity.activityListener {
    println("Receive data : $it")
}

使用此选项可以处理内存泄漏。

相关问题