如何将字符串数据从 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()
我有模块化应用程序。它的 '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()