得到碎片的容器查看我觉得有访问视图,而不是使用
((ViewGroup) getView().getParent()).getId()
我会假设你使用的是呈现一个MainActivity工作的更标准的方法列表片段,然后可以在单击项目时显示另一个列表片段,等等。我假设您已选择将MainActivity的主视图替换为您呈现的列表片段的内容。
因为每个列表片段都在MainActivity中承载,所以您始终可以访问MainActivity的视图。
// Inside of onListItemClick...
FragmentManager fm = getFragmentManager();
Fragment fragment = new MyOtherListFragment();
FrameLayout contentView = (FrameLayout) getActivity().findViewById(R.id.content_view);
fm.beginTransaction()
.replace(contentView.getId(), fragment)
.addToBackStack(null)
.commit();
上面的例子假设你有你在MainActivity设置XML布局资源,调用XML资源R.layout.activity_main,那里有一个id R.id.content_view一个FrameLayout里。这是我采取的方法。我在这里展示的例子是我实际在我的应用程序中编写的一个简单版本。
顺便说一句,我的版本的IntelliJ的(1.0.1版本)警告我说,
((ViewGroup) getView().getParent)
可能会抛出一个NullPointerException。
它给我null任何想法,当我尝试说LinearLayout x =(LinearLayout)((ViewGroup)getView()时,我有主屏幕包含布局,我用作父级的布局。getParent());在片段类中被调用,但它总是为空 – AMH
工作就像一个魅力,谢谢你为我节省了时间 –