项目需求,需要在app中使用fragment,实现view的显示与隐藏,遇到一些小问题,在此记录一下。
功能:点击按钮,fragment出现,再次点击,fragment隐藏;
有问题的代码:
@Override
public void onClick(View v) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
switch (v.getId()) {
case R.id.openCamBtn:
if (camFlag == 0) {
fragmentTransaction.add(R.id.containerFL, CamFragment.newInstance(), "CamFragmentOpen");
camFlag =1;
} else {
fragmentTransaction.remove(fragment);
camFlag = 0;
}
fragmentTransaction.commit();
break;
}
}
此代码的问题是,点击按钮,fragment可以显示,但是再次点击,无法remove当前fragment;
解决问题的代码:
@Override
public void onClick(View v) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
switch (v.getId()) {
case R.id.openCamBtn:
if (camFlag == 0) {
fragmentTransaction.add(R.id.containerFL, CamFragment.newInstance(), "CamFragmentOpen");
camFlag =1;
} else {
Fragment fragment=fragmentManager.findFragmentByTag("CamFragmentOpen");
fragmentTransaction.remove(fragment);
camFlag = 0;
}
fragmentTransaction.commit();
break;
}
}
解决的方法:
通过FragmentManager的findFragmentByTag()方法获取到待移除fragment的TAG,再将其传入FragmentTransaction的remove()方法即可;
--------------------------------------------------------------------------------------
另外,注意add或remove后的commit();
记录备忘于2018年4月23日22:09:25