Я создаю приложение для Android, которое составляет один из его экранов, используя набор элементов, каждый из которых является дочерним элементом класса ScreenElement, который снова расширяет LinearLayout
.Добавить Google Map как дочерний элемент LinearLayout
Моя активность запрашивает базу данных, определяет количество элементов и их характер и добавляет каждый элемент в макет действия. Элементы являются регулярные классы Java, но так как они, через их родителей, продлить LinearLayout
, я могу просто добавить их делают
LinearLayout layout = (LinearLayout) findViewById(R.id.screenLayout);
for(ScreenElement e : screenElements) {
layout.addView(e);
}
Элемент может содержать все виды вещей, например, изображения или текста. Теперь я хочу иметь элемент, который может отображать карту. Проблема в том, что Google рекомендует отображать карту в Fragment
, что невозможно (потому что класс удержания - это View
, а не Activity
или Fragment
. Также есть MapView
, который я мог бы использовать, но все примеры, которые я нашел (например, this или this) использует MapView
внутри Activity
, потому что MapView
требуется для подключения к переопределенным функциям (, onDestroy
, ...) из Activity
.
Так что я в основном в надежде найти что-то, что делает это (не рабочий код):
public class MapElement extends ScreenElement {
private MapView mapView;
private GoogleMap gMap;
public MapElement(Context con) {
super(con);
mapView = new MapView(con);
gmap = new GoogleMap();
// Set map options and features, size etc.
mapView.setMap(gMap);
this.addView(mapView);
}
}
Ну, за исключением того, что это не работает. Я был бы благодарен за каждый намек, который вы могли бы мне дать!
Это Google Maps API демо есть раздел «Programatically добавить карту», которая может быть полезна для вас. https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/ProgrammaticDemoActivity.java – Dportology
Да, я пробовал это, но проблема в том, что 'getSupportFragmentManager() 'может вызываться только в том случае, если' Activity' расширяет 'FragmentActivitiy'. Это не так, потому что я работаю в классе non-Activity. В вашем примере говорится, что «MapFragment» не может быть создан программно, поэтому я не могу использовать здесь «MapFragment». – s4inz