1

ok 直截了当,我正在使用 ViewPager,而且我有多个片段。每个片段都有自己的形式

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

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

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

谢谢你的帮助

4

2 回答 2

3

给每个片段一个唯一的标签,例如片段1有标签“frag1”,片段2有标签“frag2”,在你的FragmentActivity中,你可以使用它们的标签访问片段,如下所示:

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

现在您可以访问 fragment1/fragment2 中的编辑文本,

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

然后,你可以得到文本,editText1.getText();

于 2012-06-11T12:04:24.450 回答
0

另一种可能性是,如果您不想使用 getView 和 findViewById 并且(我真的不知道哪个性能更高,如果有人对此有所了解,我很乐意对其进行解释:)):

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

您只需将标签收到的片段直接转换为这个 java 类:

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

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

不确定哪种方式在性能方面更好,因为在这种方式中,您在创建视图时必须保持对视图的引用,而在另一种方式中,您只需搜索它..?

于 2012-06-11T12:09:28.070 回答