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

Posted

技术标签:

【中文标题】如何将字符串数据从活动发送到片段?【英文标题】:How can I send string data from activity to fragment? 【发布时间】:2021-01-04 01:45:27 【问题描述】:

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

此片段代码位于我调用活动的“应用”模块中:

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)
        
    

此活动代码位于我尝试返回片段并进入循环的不同模块中:

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

如果数据来自活动,我想在屏幕上看到 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()
        
    

注意:我不能直接在活动中调用片段,因为它会导致“循环依赖”,这是模块化结构中的架构问题。

【问题讨论】:

【参考方案1】:

你需要改变

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

startActivityForResult(intent, 101)

因为如果您使用 activity.startActivityForResult() 意图将在活动类中调用 onActivityResult()

【讨论】:

以上是关于如何将字符串数据从活动发送到片段?的主要内容,如果未能解决你的问题,请参考以下文章

Java Android - 将数据从活动发送到片段

如何将数据从一个片段传输到另一个片段android

如何将可扩展列表视图的选定子视图数据从片段发送到父活动?

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

将数据从一个片段发送到另一个片段时出错。 (两个片段都由一个活动托管)

在Android中将数据从活动发送到片段