如何将字符串数据从 activity 发送到片段?

How can I send string data from activity to fragment?

我有模块化应用程序。它的 'app' 模块有一个片段,它在不同的模块中调用 activity。然后使用后退按钮,我想 return 到带有字符串数据的片段。但是过一会就进入循环了。

这个片段代码在 'app' 模块中,我调用 activity:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        button_info_idcard.setOnClickListener {
            //start OcrActivity
            //Toast.makeText(context, "fdglkds", Toast.LENGTH_SHORT).show()
            val intent = Intent(activity, OcrActivity::class.java)
            (activity as MainActivity2?)!!.startActivityForResult(intent, 101)
        }
    }

这个 activity 代码在不同的模块中,我在其中尝试 return 片段并进入循环:

imagebutton_ocr_back.setOnClickListener {
            val intent = Intent()
            intent.putExtra("TEST_TEXT",test)
            setResult(101,intent)
            finish()
        }

如果数据来自 activity 我想在屏幕上看到 Toast 消息:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        Log.i("Muhittin","onActivityResult()")

        if (requestCode == 101) {
            val message = data!!.getStringExtra("TEST_TEXT")
            Toast.makeText(context,message,Toast.LENGTH_SHORT).show()
        }
    }

注意:我不能直接调用activity中的片段,因为它会导致'circular dependency',这是模块化结构中的架构问题。

你需要改变

(activity as MainActivity2?)!!.startActivityForResult(intent, 101)

startActivityForResult(intent, 101)

因为如果您使用 activity.startActivityForResult() 意图将在 activity class

中调用 onActivityResult()