gpt4 book ai didi

java - Android fragment 和 findFragmentByTag()

转载 作者:行者123 更新时间:2023-11-29 06:01:19 29 4
gpt4 key购买 nike

我有一个父 FragmentActivity 和三个子 Tab Fragment。当在 FragmentActivity 上按下“提交”按钮时,我想对不同选项卡 fragment 中所有 EditText 字段的值求和。我认为我的想法是正确的,使用 getSupportFragmentManager().findFragmentByTag(),但是我发现它只返回当前 Activity fragment 的值。我假设我也可以访问非 Activity (或不可见)的标签 fragment :

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 都相同。它们将是 Activity 标签 fragment 的总和。

有没有人有什么想法?

谢谢!

最佳答案

正如 Barak 上面提到的,您需要掌握包含 View 的 fragment 。请记住,如果您使用某种 View 寻呼机,根据它的配置方式,只会实例化当前可见的页面/fragment 。

解决方案:

  1. 如果您没有很多 fragment ,您可以在缓存中跟踪 fragment 或包含 View 。
  2. 使用 ViewHolder 模式“缓存”您需要访问的相关数据。

关于java - Android fragment 和 findFragmentByTag(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997314/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com