繁体   English   中英

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

[英]How can I send string data from activity to fragment?

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

此片段代码位于我称之为活动的“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()
        }
    }

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

你需要改变

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

startActivityForResult(intent, 101)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM