2017-10-12 8 views
2

I ont deux fragments et le premier fragment a une recyclerview adapter été je veux passer la position de l'adaptateur à un autre fragment de clicking la recycler view ..comment transmettre des données entre les fragments de l'adaptateur recyclerview

Fragment 1 Code de recyclerview adapter :

holder.address.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          Log.i("Position of items...///", String.valueOf(position)); 
          //For sending data between fragments 

          Bundle bundle = new Bundle(); 
          bundle.putInt("Position", position); 
          StoreDetails storeDetails = new StoreDetails(); 
          storeDetails.setArguments(bundle); 
          getActivity().getSupportFragmentManager() 
            .beginTransaction() 
            .replace(R.id.content_frame, new StoreDetails()) 
            .commit(); 

         } 
        }); 

Fragment 2 Code:

Bundle b = getArguments(); 
    if(b != null) 
    { 
     b.getInt("Position"); 
    } 
    else 
    { 
     Toast.makeText(getActivity(), "Oops sorry..!!", Toast.LENGTH_SHORT).show(); 
    } 
+0

Je reçois NullPointerException du second fragment .. –

Répondre

4

vous ajoutez Bundle dans StoreDetailsFragment et votre passez nouvel objet de StoreDetailsFragment

vous devez passer un même objet de votre StoreDetailsFragment dans lequel vous ajoutez le Bundle alors changez comme ci-dessous le code

utilisent ce

Bundle bundle = new Bundle(); 
bundle.putInt("Position", position); 
StoreDetails storeDetails = new StoreDetails(); 
storeDetails.setArguments(bundle); 
getActivity().getSupportFragmentManager() 
       .beginTransaction() 
       .replace(R.id.content_frame, storeDetails) 
       .commit(); 

au lieu de cette

getActivity().getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.content_frame,new StoreDetails()) 
      .commit(); 
+3

remarquez parfaitement! –

+0

Oui, je l'ai eu .. Merci .. !! –

+0

plus bienvenus @abiramibhargavi heureux de vous aider –

0

Essayez comme ceci:

private Bundle bundle; 

@Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    this.bundle = getArguments(); 
    if (bundle != null) { 
     bundle.getInt("Position"); 
    } else { 
     Toast.makeText(getActivity(), "Oops sorry..!!", Toast.LENGTH_SHORT).show(); 
      } 
    } 
+0

Merci .. Je l'ai fait de réponse @Nilesh Rathod. –