我一直在网上寻找和搜索,甚至试图检查官方Android文档“片段之间的通信”或与片段和活动(http://developer.android.com/training/basics/fragments/communicating.html)进行通信,甚至尝试在这里搜索几个问题StackOverflow只是为了得到我的问题的提示,但它们似乎都没有回答我的情况。
我知道主机Activity
实现的接口侦听器将数据从Fragment
传递到主机Activity
,并在我的项目中使用它很多。但是我认为片段数据传递的模型实际上只有在存在“meta”事件时才有用,即onClick
,onItemClick
等会激发该自定义事件。
但对于我的情况,我有一个包含RadioGroup
的片段,其中包含RadioGroup
的内容,其中第一个是包含多个EditText
的视图组,我需要使用其他几个对象将其内容发送回Fragment的主机Activity。我的自定义事件正在被“元”事件触发,即RadioGroup.setOnCheckedChangeListener()
。
为了可视化,这就是我在布局资源中的布局:
RadioGroup中
-RadioButton 1
--- LinearLayout(切换为通过检查RadioButton 1显示,当检查其他RadioButton时隐藏)包含多个EditText s
------ EditText 1
------ EditText 2
------ EditText 3
------ EditText 4
-RadioButton 2
-RadioButton 3
-RadioButton 4
每次我检查RadioButton 1时,它都会切换到使用EditText显示LinearLayout,显然它会触发RadioGroup的setOnCheckedChangeListener(),在其中使用包含来自EditText的内容的自定义对象等参数触发我的自定义事件。但是,当我不检查RadioGroup以及编辑/更新EditText时,我的自定义事件将不会被调用。
我想在EditText.addTextChangedListener()
上使用EditText
并在我填写表单上的所有数据时触发自定义事件。但是我认为这样做有点不优雅,我想有一种更优雅,更好的方法,如果有的话,将那些EditText数据从它们的主机片段传递回Activity,或者可能是从中获取数据片段化到活动
我的问题是,我如何将数据从FROM片段传递到Activity,我将不依赖于“meta”事件来触发我的自定义事件或以其他方式。
答案 0 :(得分:1)
要回复我的活动,我只需添加一个片段可以直接调用的方法。在Activity类中:
public void sendMessage(String message) {
// Do something with the message
}
在片段中:
((MyActivity)getActivity()).sendMessage("Code Apprentice is the best!");