2016-05-12 62 views
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 
} 

回答

0

原來,第一個產品,我只需要使用getArguments爲在onCreateView方法中捆綁如下所示:

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