我有一个程序,其默认用户界面为ViewPager
,TabLayout
。 MainActivity
是CoordinatorLayout
。 Viewpager
,AppBarLayout
和TabLayout
都包含在RelativeLayout
中,我打算将其用作容器,用于将主UI交换为不同的视图。
在其中一个ViewPager
视图中托管是一个按钮。此按钮通过MainActivity
实现的HelperLinkerListener
接口与MainActivity
进行通信。我知道接口连接正确,因为我已经通过logcat测试了它。
我喜欢让按钮换出我的包装RelativeLayout
以获取新片段。以下是我onHelperLinkerClick()
的当前内容:
Fragment fragment = new GsonPlaceholder();
Bundle bundle = new Bundle();
bundle.putParcelable("char",charGson);
fragment.setArguments(bundle);
Log.d("logtest", "onHelperLinkerClick: " + bundle.getParcelable("char"));
FragmentTransaction ft = fm.beginTransaction();
ft.remove(getSupportFragmentManager().findFragmentById(R.id.container));
ft.commit();
这里,charGson是一个实现Parcelable的正确定义的类。这条线
ft.remove(getSupportFragmentManager().findFragmentById(R.id.container));
抛出以下空指针异常:
java.lang.NullPointerException:尝试从字段'int读取 空对象上的android.support.v4.app.Fragment.mContainerId' 参考
我不清楚如何解决这个问题。有什么想法吗?
答案 0 :(得分:0)
尝试使用getSupportFragmentManager()
更改fm
所以它会成为
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
答案 1 :(得分:0)
在我的情况下,尝试删除null
的片段时引发了完全相同的异常。您可以插入代码
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction().remove(null).commit();
并查看您的错误日志。问题是异常将不会抛出此字符串,但稍后会在Android内部的某个地方抛出,您不会看到哪个代码字符串是异常的原因。