Android—fragment无法remove
16lz
2021-01-25
项目需求,需要在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
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- android.app.Activity 的介绍
- Android(安卓)RIL 本地代码(c/c++) 和 Java代码部分分析
- Android通用Adapter使用例子
- Android之——jni通用工具方法
- android报The content of the adapter has changed but ListView
- Android中BottomNavigationView切换时去除效果
- 【Android之隐藏状态栏、设置全屏、取消全屏】
- Android(安卓)Mediarecorder录制的时候屏蔽掉声音