频繁切换fragment出现报错:Attempt to invoke virtual method ‘void android.widget.LinearLayout.setVisibity(int)’ on a null object refrence
fragment切换的逻辑代码如下:
FragmentA
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_layout,new FragmentB(),null)
.addToBackStack(null)
.commit();
FragmentB
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_layout,new FragmentA(),null)
.addToBackStack(null)
.commit();
报错问题解决办法:
通过对fragment的声明周期了解到fragment之间切换的方法除了replace之外还有add,于是我使用了add()+hide()
修改了代码,问题得到解决
代码如下:
FragmentA
getActivity().getSupportFragmentManager()
.beginTransaction()
.hide(new FragmentA())
.add(R.id.fragment_layout,new FragmentB(),null)
.addToBackStack(null)
.commit();
FragmentB
getActivity().getSupportFragmentManager()
.beginTransaction()
.hide(new FragmentB())
.add(R.id.fragment_layout,new FragmentA(),null)
.addToBackStack(null)
.commit();
其实又看到其它文章写的是add()+show()+hide(),但是水平有限,只用add()+hide()也可以解决
掉Attempt to invoke virtual method 'void android.widget.LinearLayout.setVisibity(int)' on a null object refrenceFragment
的报错