Aynı konuyla ilgili bazı soruların olduğunu biliyorum, ancak bunların hiçbiri benim durumum için geçerli değil. GoogleMap kullanan bir uygulama yapıyorum, ancak sorun, parçanın iki kez oluşturulduğudur. Bu, uygulamayı yavaşlatmak ve birbiriyle çakışmak gibi sorunlara neden oluyor. Programın işleyiş şekli şu şekildedir: Ana faaliyetin, başlangıçta bir giriş parçasını tutan bir konteyneri vardır. Giriş başarılı olursa, ana etkinlik giriş parçasını çıkarır ve harita parçasını ekler.Fragman iki kez oluşturuldu
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:layout_width="wrap_content"
android:layout_height="0dp"
class="com.google.android.gms.maps.SupportMapFragment"
android:tag="@string/google_map"
android:id="@+id/google_map"
android:layout_weight="5"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:layout_weight="1"
android:clickable="true"
android:baselineAligned="false"
android:id="@+id/map_event">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/icon_event_divisor">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:clickable="false"
android:layout_gravity="center"
android:id="@+id/event_icon"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/person_full_name"
android:textSize="10dp"
android:id="@id/person_full_name"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="8dp"
android:text="@string/event_description"
android:layout_below="@id/person_full_name"
android:id="@+id/event_description"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
bunu oluyor bana neden anlamaya yardımcı olabilir, bu yüzden bunu düzeltebilirsiniz:
public class MapFragment extends SupportMapFragment {
private GoogleMap mMap;
private Event mEventSelected;
private Person mPersonSelected;
private Map<Marker, Event> mMapMarkers;
private List<Polyline> mLines;
private TextView mPersonFullName;
private TextView mEventDescription;
private LinearLayout mMapEvent;
private ImageView mEventIcon;
private String mEventId;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
mMapMarkers = new HashMap<>();
mLines = new ArrayList<>();
mEventSelected = null;
mPersonSelected = null;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.fragment_map, container, false);
v = drawDefaultLayout(v);
if (mMap == null)
{
initializeMap();
}
return v;
}
private void initializeMap() {
mMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.google_map)).getMap();
if (getArguments() != null && getArguments().containsKey(FamilyMapData.getInstance().EVENT))
{
mEventId = getArguments().getString(FamilyMapData.getInstance().EVENT);
drawCenteredMap();
}
pinEvents();
markerHandler();
}
private void drawCenteredMap() {
mEventSelected = FamilyMapData.getEvents().get(mEventId);
setCurrentEvent();
CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(mEventSelected.getLatitude(), mEventSelected.getLongitude()));
mMap.moveCamera(center);
drawLines();
}
private void pinEvents() {
mMap.clear();
Map <String, Event> events = FamilyMapData.getEvents();
for (Event event : events.values())
{
LatLng coordinates = new LatLng(event.getLatitude(), event.getLongitude());
String description = event.getDescription();
if (Filter.sFilterMap.containsKey(description) && Filter.sFilterMap.get(description)) {
float color = getColor(description);
mMapMarkers.put(mMap.addMarker(new MarkerOptions().position(coordinates).icon(BitmapDescriptorFactory.defaultMarker(color))), event);
}
}
}
ve bu benim xml nedir? Şimdiden teşekkür ederim.
gitmek pportMap parçası ve onun düzeninin içine başka bir MapFragment koyun. Bu senin problemin olabilir. –