gpt4 book ai didi

java - 使用 FragmentTransaction 与 fragment 通信

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:21 25 4
gpt4 key购买 nike

我希望两个 fragment 能够相互通信。 ProductDisplayFragment 会将对象“发送”到 PaymentFragment。以下代码显示了我使用 FragmentTransaction 将对象发送到 PaymentFragment 的代码。

除非我尝试发送第一个对象,否则此代码有效。第一个对象从未收到。当我尝试添加“paymentFragment.getProduct(product);”时在 else 语句中,应用程序将崩溃。

这是我的代码:

在ProductDisplayFragment.java下:

@Override
public void onProductSelected(Product product) {
PaymentFragment paymentFragment = (PaymentFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_payment_list);
if(paymentFragment != null) {
paymentFragment.getProduct(product);
} else {
paymentFragment = new PaymentFragment();
Bundle args = new Bundle();
args.putSerializable(KEY_PRODUCT, product);
paymentFragment.setArguments(args);

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_payment_list, paymentFragment);
transaction.addToBackStack(null);
transaction.commit();
}
}

在ProductFragment.java下

public void getProduct(Product product) {
// Do something to product item
}

最佳答案

事实证明,对于第一个产品,我只需在 onCreateView 方法中使用 getArguments 来获取 Bundle,如下所示:

    // Get first product
Bundle arguments = getArguments();
if (arguments != null) {
Product product = (Product) arguments.getSerializable(KEY_PRODUCT);
getProduct(product);
}

关于java - 使用 FragmentTransaction 与 fragment 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37183931/

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