我正在开发一个应用程序,其中片段是动态生成的。
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerAdapter(getSupportFragmentManager());
for (int i = 0; i < sequence_no.size(); i++)
{
adapter.addFragment(FragmentTwo.newInstance(i,(i+1)));
}
viewPager.setAdapter(adapter);
}
现在假设生成了三个片段。
生成的片段确实有不同的小部件,例如 edittext、spinner 等。
我会进行管理,因为我有一个标志,它通知我要显示哪一个(旋转器或编辑文本)。
我在活动中有一个按钮,单击该按钮后我需要从所有片段获取值,但我如何仅从第一个片段获取值。
我在这里放了一个错误的样本,因为我知道它是错误的,但我保留以供参考。
下面是单击提交按钮时的代码,其中值是数组列表。
if (FragmentTwo.ed_complain != null)
{
values.add(FragmentTwo.ed_complain.getText().toString());
}
if (FragmentTwo.cb_complain != null)
{
values.add(FragmentTwo.cb_complain.getText().toString());
}
if (FragmentTwo.spinner_complain != null && FragmentTwo.spinner_complain.getSelectedItem() != null)
{
values.add(FragmentTwo.spinner_complain.getSelectedItem().toString());
}
请建议我需要做什么才能从所有片段中获取所有值。
您可以使用这种方式解决这个问题。
创建一个Interface
并在每个片段中实现它。现在用这个Interface
您可以从特定片段中获取价值。
例如,您创建一个Interface
public interface IGetValue{
String getEditTextValue();
}
现在,如果每个片段都实现这个接口,那么每个片段都必须实现这个getEditTextValue()
方法,您可以返回该实现方法的 EditText 值。只需使用:
@Override
public String getEditTextValue() {
return YOUR_EDIT_TEXT.getText().toString();
}
现在,如果你想获得EditText
价值来自Fragment1
在您的活动中,只需使用这行代码:
String valueFromFragment1= fragment1Instance.getEditTextValue();
欲了解更多信息,请检查this https://stackoverflow.com/a/36467198/3073945 and this https://stackoverflow.com/a/36468506/3073945 answer.
谢谢 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)