-2

J'utilise Bundle pour transmettre des données de mon premier TabFragment mais il invite avec le NullPointerException. L'erreur est produit lorsque dans list_fragments2 dans le deuxième ongletPasser des données en utilisant bundle entre tablayout

MainActivity Fragment

list_fragment2 fragment = new list_fragment2(); 
Bundle b = new Bundle(); 
b.putString("test","text"); 
fragment.setArguments(b); 
Toast.makeText(this, "" + b, Toast.LENGTH_SHORT).show(); 

SecondActivity Fragment

public class list_fragment2 extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View h = inflater.inflate(R.layout.tab2, container, false); 
     TextView textView = (TextView) h.findViewById(R.id.textView); 

     Bundle bundle=getArguments(); 

     //your string 
     if(bundle != null) { 
      String test = bundle.getString("test"); 
      textView.setText(test); 
     } 
      return h; 

    } 
} 

Répondre

1

-vous chargez réellement votre deuxième fragment?

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

list_fragment2 fragment = new list_fragment2(); 
Bundle b = new Bundle(); 
b.putString("test","text"); 
fragment.setArguments(b); 
fragmentTransaction.replace(placeholder, fragment); 
fragmentTransaction.commit(); 
+0

merci, je l'essayer avant, mais je reçois toujours NullPointerException cette erreur – AnthonyTang

+0

Pouvez-vous envoyer le code de 'list_fragment2'? – beeb

+0

list_fragment2 public class {Fragment @Override publique Voir onCreateView (LayoutInflater gonfleur, contenant ViewGroup, Fagot savedInstanceState) { Voir h = inflater.inflate (R.layout.tab2, contenant, false); TextView textView = (TextView) h.findViewById (R.id.textView); Bundle bundle = getArguments(); // votre chaîne if (bundle! = Null) { String test = bundle.getString ("test"); textView.setText (test); } return h; }} – AnthonyTang

0

Je pense que vous pouvez créer votre instance de code dans list_fragment2list_fragment2. Peut-être que vos codes ont recréé list_fragment2 plusieurs fois.

public static list_fragment2 createInstance() { 
     list_fragment2 fragment = new list_fragment2(); 
     Bundle bundle = new Bundle(); 
     bundle .putString("test","text"); 
     fragment.setArguments(bundle); 
     return fragment; 
    }