我认为有一种更标准的方式来访问视图而不是使用
((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。