【发布时间】:2019-07-01 22:37:52
【问题描述】:
按下按钮时我需要删除 QRCode 扫描视图 这是我的代码:
public void back() {
if (binding.vpPager.getCurrentItem() == 1) {
binding.vpPager.setCurrentItem(0);
}
else
{
scanQRcodeFragment = new ScanQRcodeFragment();
scanQRcodeFragment.removeFragmentReader();
}
}
要使用的功能:
public class ScanQRcodeFragment extends Fragment implements BarcodeReaderFragment.BarcodeReaderListener{
public void removeFragmentReader() {
FragmentManager supportFragmentManager = getChildFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
Fragment fragmentById = supportFragmentManager.findFragmentById(R.id.container);
if (fragmentById != null) {
fragmentTransaction.remove(fragmentById);
}
fragmentTransaction.commitAllowingStateLoss();
}}
当我运行该应用程序时,它会崩溃并出现此错误:
java.lang.IllegalStateException:尚未附加片段。 在 android.support.v4.app.Fragment.instantiateChildFragmentManager(Fragment.java:2383)
我发现了很多相同问题的问题,但没有人解决我的问题。
我需要你的帮助。
【问题讨论】:
-
Fragment是否附加到R.id.container? -
你的意思是xml代码吗?
-
是的。如果您使用
getSupportFragmentManager()添加了片段,则需要使用getSupportFragmentManager()将其删除。 -
removeFragmentReader() 的代码之前有效,但是当我在下面提到的函数 back() 的另一个类中调用相同的函数时,我得到了这个问题。
-
当您从不同的班级调用时,您正在使用一个新的引用,这就是为什么您不能用这个新的引用删除它。请检查答案。