1
我想要兩個片段互相通信。 ProductDisplayFragment將把對象「發送」到PaymentFragment。以下代碼顯示了我使用FragmentTransaction將對象發送到PaymentFragment的代碼。使用FragmentTransaction與片段進行通信
此代碼工作除了當我嘗試發送第一個對象。第一個對象從來沒有收到。當我嘗試添加「paymentFragment.getProduct(product);」在其他語句中,應用程序將崩潰。
這裏是我的代碼:
在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
}