2017-04-18 2 views
1

Ich habe Button-Klick-Listener auf wessen Klick Fragment ersetzt werden, und übergeben Argument am nächsten Fragment. Code: -Null Zeigerausnahme während des Komponententests in Roboelectric erhalten

Fragment fragment = new CustomList(); 
      Bundle args = new Bundle(); 
      args.putString("fragment", "Custom"); 
      args.putSerializable("productBean", productBean); 
      fragment.setArguments(args); 
      fragmentManager = getActivity().getSupportFragmentManager(); 
      fragmentTransaction = fragmentManager 
        .beginTransaction(); 
      fragmentTransaction.setCustomAnimations(R.anim.slide_in, R.anim.slide_out, R.anim.slide_enter, R.anim.slide_exit); 
      fragmentTransaction.replace(R.id.container_body, fragment); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 

Geschriebene Testfall für die Schaltfläche klicken: -

Button custom_btn = (Button) fragment.getView().findViewById(R.id.custom_btn); 
      custom_btn.performClick(); 

Aber bei der Ausführung von Testfällen, es zeigt Null-Zeiger-Ausnahme, wenn getArguments auf Custom() Fragment.

productsBean = (ProductsBean) getArguments().getSerializable("productsBean"); 
+0

Sein ProduktBean im Code, versehentlich falsch Code hier eingefügt.Sorry.Any mehr Vorschlag –

Antwort

1

Versuchen Sie diesen Code ändern:

productsBean = (ProductsBean) getArguments().getSerializable("productsBean"); 

dazu

productsBean = (ProductsBean) getArguments().getSerializable("productBean"); 

Wie Sie sehen können, Sie den Bundle hinzufügen den Tag "productBean", aber wenn man versuchen Sie es zu bekommen Sie verwenden das Tag "productsBean", wo Sie die "s" Charakter hinzugefügt.

Ich würde mit dieser Änderung beginnen.

+0

Ich würde sagen - Guter Fang! –

+0

Sein ProduktBean im Code, versehentlich falsch Code hier eingefügt.Sorry.Any mehr Vorschlag @niarb –

+0

Hallo @ShivamKapoor, wo rufen Sie die getArguments? innerhalb welcher Methode des Fragmentzyklus? Übrigens sollten Sie eine vorherige Null-Überprüfung durchführen, um die NPE zu verhindern, so: Bundle arguments = getArguments(); if (Argumente! = Null) { // dann haben Sie Argumente } else {// keine Argumente geliefert ... } – niarb

Verwandte Themen