2017-04-18 6 views
1

クリックフラグメントが置き換えられたボタンクリックリスナーがあり、次のフラグメントに引数を渡します。 コード: - ボタンのクリック用roboelectricのユニットテスト中にヌルポインタ例外が発生する

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

書かれたテストケース: -

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

しかし、テストケースの実行に

、それがnullポインタ例外CustomList上getArguments()の断片を示しています。あなたが見ることができるように、あなたはバンドルタグ "なProductBean"に追加する

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

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

これまで、しかし、ときに:

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

コード内のその商品ビーンは間違ってここに間違ったコードを貼り付けてしまいました。ごめんなさい。他の提案 –

答えて

1

変更するには、このコードを試してみてくださいそれを取得しようとすると、"productsBean"というタグを使用しています。そこには "s"文字が追加されています。

私はその変更を開始します。

+0

私はこう言うでしょう - 良いキャッチ! –

+0

コード内のproductBeanを間違ってここに間違ったコードを貼り付けました.Sorry。他の提案@niarb –

+0

こんにちは@ShivamKapoor、どこでgetArgumentsを呼び出していますか?断片化のサイクルの中で? Btw、NPEを防ぐために、以前のヌルチェック検証を行う必要があります。 Bundle arguments = getArguments(); 場合(引数!= null)の { が//その後、あなたが 引数を持っている}他{// 供給引数なし... } – niarb

関連する問題