从Fragment Back To Activity中托管的多个EditText获取数据

时间:2014-07-11 01:46:40

标签: android android-fragments

我一直在网上寻找和搜索,甚至试图检查官方Android文档“片段之间的通信”或与片段和活动(http://developer.android.com/training/basics/fragments/communicating.html)进行通信,甚至尝试在这里搜索几个问题StackOverflow只是为了得到我的问题的提示,但它们似乎都没有回答我的情况。

我知道主机Activity实现的接口侦听器将数据从Fragment传递到主机Activity,并在我的项目中使用它很多。但是我认为片段数据传递的模型实际上只有在存在“meta”事件时才有用,即onClickonItemClick等会激发该自定义事件。

但对于我的情况,我有一个包含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”事件来触发我的自定义事件或以其他方式。

1 个答案:

答案 0 :(得分:1)

要回复我的活动,我只需添加一个片段可以直接调用的方法。在Activity类中:

public void sendMessage(String message) {
    // Do something with the message
}

在片段中:

((MyActivity)getActivity()).sendMessage("Code Apprentice is the best!");