2017-04-18 63 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(); 

但在测试用例的执行,它显示空指针异常,当上CustomList getArguments()片段。

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

它的产品在代码中,错误地在这里粘贴了错误的代码。好。更多的建议 –

回答

1

尝试更改此代码:

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

这个

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

正如你所看到的,你要添加到包标签“的ProductBean”,但是当你尝试获得它你使用的标签“productsBean”,在那里你添加了“s”charachter。

我会从那个改变开始。

+0

我会说 - 很好! –

+0

其产品在代码中,错误地在这里粘贴了错误的代码。任何更多的建议@niarb –

+0

嗨@ShivamKapoor,你在哪里调用getArguments?里面的片段循环的唯一方法?顺便说一句,你应该做一些先前的空检查验证,以防止NPE,如下所示: Bundle arguments = getArguments(); 如果(参数!= NULL){ // 那么你的论点 } {其他供应 //没有参数... } – niarb