2016-05-12 41 views
1

Ich möchte zwei Fragmente miteinander kommunizieren. ProductDisplayFragment sendet das Objekt an PaymentFragment. Der folgende Code zeigt den Code, in dem ich FragmentTransaction verwendet habe, um ein Objekt an PaymentFragment zu senden.Kommunikation mit Fragmenten mit FragmentTransaction

Dieser Code funktioniert, außer wenn ich versuche, das FIRST-Objekt zu senden. Das erste Objekt wird niemals empfangen. Wenn ich versuche "paymentFragment.getProduct (product)" hinzuzufügen In der else-Anweisung stürzt die App ab.

Hier ist mein Code:

Unter 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(); 
     } 
    } 

Unter ProductFragment.java

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

Antwort

0

stellt sich heraus, dass ich nur noch getArguments für das erste Produkt verwenden für Kombinieren Sie die onCreateView-Methode wie folgt:

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