gpt4 book ai didi

带有 bundle 的 Android 奇怪行为

转载 作者:行者123 更新时间:2023-11-30 03:25:04 25 4
gpt4 key购买 nike

我正在使用 bundle 将数据从 Activity 发送到 Fragment。

这是 Activity 中的代码:

 Bundle extras1 = new Bundle();
extras1.putString("productId", productId);
extras1.putString("ddsId", id1);

frag1.setArguments(extras1);

getSupportFragmentManager().beginTransaction().add(frame1.getId(), frag1, "fragment_grandchild1" + fragCount).commit();

现在,当我在调试中运行我的项目并将鼠标悬停在 exras1 上时,我可以看到 productId 和 ddsId 都确定了它们的值。

然后是我 fragment 中的代码:

    Bundle extras = getActivity().getIntent().getExtras();
if (extras != null) {
productId = extras.getString("productId");
ddsId = extras.getString("ddsId");
}

现在发生的奇怪事情是它只接收 productId?

当我调试并将鼠标悬停在 extras 上时,它只有 productId 而没有 ddsID。怎么会这样?

编辑:

我发现了它在做什么。出于某种原因,它将 Activity 类收到的包发送给我的 fragment 。不是我指定的那个。

我该如何改变它?

最佳答案

您正在阅读 Activity 的额外内容。尝试以下操作:

Bundle extras1 = new Bundle();
extras1.putString("productId", productId);
extras1.putString("ddsId", id1);

Fragment fg = new Fragment();
fg.setArguments(extras1);

然后在你的 fragment 中:

Bundle extras = getArguments();
if (extras != null) {
productId = extras.getString("productId");
ddsId = extras.getString("ddsId");
}

使用:

Bundle extras = getArguments();

而不是:

Bundle extras = getActivity().getIntent().getExtras();

提示(希望对您有所帮助)

我在许多代码中看到,如果您没有很多额外功能,通常的做法是像这样在 fragment 中创建一个静态方法。

public static YourFragment newInstance(String extra1, int extra2) {
Fragment fg = new YourFragment();

Bundle args = new Bundle();
args.putString("extra1TagId", extra1);
args.putInt("extra2TagId", extra2);

fg.setArguments(args);

return fg;
}

关于带有 bundle 的 Android 奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368314/

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