数据在Android模块之间如何传输?

huangapple go评论74阅读模式
英文:

How is data transferred between modules in Android?

问题

模块之间如何传输数据?B 模块实现了 A 模块。因此模块 B 可以访问模块 A。但模块 A 无法访问模块 B。我如何从模块 A 中的某个活动将数据发送到模块 B 中的某个活动?模块 B 中的活动始终是打开的(当 A 模块中的活动正在运行时,我不会关闭模块 B 中的活动),而且我不能使用意图(intent)结构,我会使用 finish() 结束模块 A 中的活动。模块 A 中的活动无法直接访问模块 B 中的活动。

在模块 B 的 gradle 文件中有以下代码:

implementation project(':ModuleA')
英文:

How do I transfer data between modules? B module implements A module. So module B can access module A. But module A cannot access to module B. How can I send data from the some activity in module A to the some activity in module B? The activity in module B is always open (I don't kill activity in module B when activity in A module is running) and I cannot use the intent structure, I end the activity in module A with finish(). Activity in module A cannot reach activity in module B already.

There is the following code in the gradle file of module B.

implementation project(':ModuleA')

答案1

得分: 0

我使用以下方法解决了这个问题。

在模块 B 中,我启动了 ModuleAActivity。

startActivityForResult(Intent(this, ModuleAActivity::class.java), 1)

在模块 A 中,我设置了数据。

var returnIntent = intent
returnIntent.putExtra("result", myData)
setResult(1, returnIntent)
finish()

然后再次回到模块 B,在这里我获取数据。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == 1) {
        if (resultCode == 1) {
            val result = data?.getSerializableExtra("result")
        }
        if (resultCode == Activity.RESULT_CANCELED) {

        }
    }
}
英文:

I solved this problem with the method below.

In Module B, I start ModuleAActivity.

startActivityForResult(Intent(this,ModuleAActivity::class.java),1)

InModule A, I set the data.

var returnIntent = intent
returnIntent.putExtra("result",myData)
setResult(1, returnIntent)
finish()

Then In Module B again, I get the data.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == 1) {
        if (resultCode == 1) {
            val result = data?.getSerializableExtra("result")
        }
        if (resultCode == Activity.RESULT_CANCELED) {

        }
    }
}

huangapple
  • 本文由 发表于 2020年10月20日 22:11:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/64447002.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定