我有一个带有三个子Tab Fragments的父FragmentActivity。当在FragmentActivity上按下“提交”按钮时,我想要对不同选项卡片段中所有EditText字段的值求和。我认为我有正确的想法,使用getSupportFragmentManager()。findFragmentByTag(),但是我发现它只返回当前活动Fragment的值。我假设我可以访问非活动(或不可见)Tab片段:
int sum1 = getSupplyQuantities(Constants.TAB_TAG1);
int sum2 = getSupplyQuantities(Constants.TAB_TAG2);
int sum3 = getSupplyQuantities(Constants.TAB_TAG3);
int sum4 = getSupplyQuantities(Constants.TAB_TAG4);
private int getSupplyQuantities(String string) {
Activity tab = getSupportFragmentManager().findFragmentByTag(string)
.getActivity();
LinearLayout linearLayout = (LinearLayout) tab
.findViewById(R.id.get_supplies_layout);
int sum = 0;
for (int i = 0; i < linearLayout.getChildCount(); i++) {
View view = linearLayout.getChildAt(i);
QuantityTextView quantity = (QuantityTextView) view
.findViewById(R.id.get_supplies_list_quantity);
sum += Integer.parseInt(quantity.getText().toString());
}
return sum;
}
在上面的场景中,sum1,sum2,sum3和sum4都是相同的。它们将是活动Tab片段的总和。
有没有人有任何想法?
谢谢!
答案 0 :(得分:2)
正如上面提到的Barak,你需要掌握包含视图的片段。请记住,如果您使用某种视图寻呼机,取决于它的配置方式,只会实例化当前可见的页面/片段。
解决方案:
答案 1 :(得分:1)
我认为您需要获取片段而不是活动的视图。
通过获取您要求活动片段的活动。
答案 2 :(得分:0)
在android示例中有一个关于如何使用带有片段的标签的示例。 只需看看“... \ android-sdk \ samples \ android-15 \”并找到“ApiDemos”示例项目(需要“FragmentTabs.java”文件)。
关于edittexts:您可以将getTextFromEdittext()方法添加到您的片段类中,然后在需要时从FragmentActivity中调用它。