У меня есть Основное действие, которое я не могу продлить до действия фрагмента. Вначале я показывал свою карту google прямо, и все работало нормально. Но тогда я должен использовать фрагменты, поэтому я превратил все другие действия (кроме MainActivity) в фрагменты и смог их назвать и заменить. Но возникает проблема. Когда мне нужно было поместить мою карту google в отдельный фрагмент и вызвать ее при запуске моей основной активности .. она загружает карту, но выглядит, как будто она не создает экземпляр карты правильноКак добавить MapFragment v2 внутри фрагмента и вызвать его в MainActivity
Мой xml для MyMapFragment, который содержит карту, как это:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.abdulsalamali.letscoffee.MyMapFragment">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment
android:id="@+id/mapView"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/rl_address" />
</RelativeLayout>
</FrameLayout>
и деятельности созданной этой карте я пытаюсь инициализировать карту, как этот
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
createMapView();
// and doing some stuff here such as camera animation
}
private void createMapView() {
/**
* Catch the null pointer exception that
* may be thrown when initialising the map
*/
try {
if (null == googleMap) {
MapFragment mapFragment = new MapFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
// transaction.add(R.id.rl_map_container, mapFragment).commit();
googleMap= mapFragment.getMap();
googleMap = ((SupportMapFragment) getChildFragmentManager()
.findFragmentById(R.id.mapView)).getMap();
googleMap.setBuildingsEnabled(true);
googleMap.setMyLocationEnabled(true);
/**
* If the map is still null after attempted initialisation,
* show an error to the user
*/
if (null == googleMap) {
Toast.makeText(getActivity(),
"Error creating map", Toast.LENGTH_SHORT).show();
}
}
} catch (NullPointerException exception) {
Log.e("mapApp", exception.toString());
}
}
Так что не анимировать он просто показывает карту, не задавая текущее местоположение, кнопка не позволяет для myLocationEnabled. Фактически он возвращает экземпляр googleMap как null.
Я прочитал много вещей и получил намек на вложенные фрагменты, но не мог понять, что, как заставить его работать, я искал много учебников, в которых они используют активность фрагментов, которые я не хочу использовать. Поэтому, пожалуйста, помогите мне. Я думаю, что я совершенно ясно в своем вопросе.
http://stackoverflow.com/questions/18206615/how-to-use-google-map-v2-inside-fragment - i thnk это решит вашу проблему – koutuk
@koutuk в принятом ответе есть много вещей которые я не могу понять, можете ли вы попытаться разработать их на мне? –
какой часть непонятный .... – koutuk