Попробовав множество вещей, я закончил тем, что сделал:
Корневое представление, которое я возвратил в onCreateView()
, создается программно, а не надувается. Однако раздувание других представлений и добавление их в качестве дочерних в созданное программным способом корневое представление, по-видимому, не вызывает никаких проблем.
Шляпа снята всем, кто может выяснить, что стоит за этим странным поведением. Надеюсь, что это может быть полезно для других.
EDIT
Прошло много времени с тех пор, как я вернулся к этой теме, но, насколько я помню, этот не будет работать для меня ...
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) {
return inflater.inflate(R.layout.some_layout, container, false);
}
... тогда как этот будет работать на меня ...
private ViewGroup mapContainer;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) {
mapContainer = new LinearLayout(getActivity());
return mapContainer;
}
... и позже в onActivityCreated()
Я получу MapView из действия и добавлю его как дочерний элемент mapContainer. Если бы мне нужны были другие представления (например, заголовок выше MapView
), я мог бы раздуть их отдельно и добавить их в mapContainer, как показывает этот фрагмент кода.
private ViewGroup mapContainer;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) {
mapContainer = new LinearLayout(getActivity());
mapContainer.setOrientation(LinearLayout.VERTICAL);
View headerView = inflater.inflate(R.layout.some_layout, mapContainer, false);
mapContainer.addView(headerView);
return mapContainer;
}