如何从Fragment收集价值/数据

时间:2012-06-11 09:50:19

标签: android android-fragments

直到这一点,我正在使用ViewPager,我有多个片段。每个片段都有自己的形式

+=================+
|    Fragment1    |
+=================+
| Name (EditText) |
===================
| ID No (EditText)|
===================

+=================+ 
|    Fragment2    |
+=================+ 
| Name (EditText) |
=================== 
| ID No (EditText)|
===================

我在FragmentActivity中只有一个按钮,而不是在Fragment中。 如何将所有这些EditTexts添加/收集到fragmentActivity的列表中?

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

为每个片段提供一个唯一标记,例如,fragment1标记为“frag1”,fragment2标记为“frag2”,在FragmentActivity中,您可以使用其标记访问片段,如下所示:

Fragment1 fragment1 = (Fragment1)getFragmentManager().findFragmentByTag("frag1");
Fragment2 fragment2  = (Fragment2)getFragmentManager().findFragmentByTag("frag2");

现在您可以访问fragment1 / fragment2中的edittext,

EditText editText1 = (EditText) fragment1.getView().findViewById(R.id.editText);

然后, 您可以将文本作为editText1.getText();

获取

答案 1 :(得分:0)

另一种可能性是如果你不想使用getView和findViewById那(我真的不知道哪一个更高性能,如果有人知道任何关于它的东西,我很乐意解释它:)) :

class MyFirstFragment extends Fragment { 
    ... 
    private EditText someEditText; 
    ...
    public Object doSomethingAndGetMeSomething() {
        return somePreviouslyDefinedData;
    }
}

您只需将标记收到的片段直接转换为此java类:

MyFirstFragment firstFrag = (MyFirstFragment) getFragmentManager().findFragmentByTag("frag1");

并调用您定义的某些函数,让它执行您想要的任何任务。

不确定哪种方式在性能方面更好,因为在这一方面你必须在创建视图时继续引用你的视图,而在另一方面你只需要搜索它。?