このトピックでいくつか質問がありますが、私のケースには該当しません。私はgoogleMapを使用するアプリケーションを構築していますが、私の問題は、フラグメントが2回作成されていることです。これは、アプリケーションを遅くしたり、重複させるなどの問題を引き起こしています。これは、プログラムの仕組みです。メインアクティビティにはコンテナがあり、最初はログインフラグメントを保持しています。ログインが成功すると、メインアクティビティはログインフラグメントをデタッチし、マップフラグメントを追加します。フラグメントが2回作成される
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);
}
}
}
と、これは私のxmlです:
<?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>
あなたはそれが起こっている理由を私は理解を助けることができますので、私はそれを修正することができますか?前もって感謝します。
に行きますpportMapフラグメントとそれのレイアウトの中に別のMapFragmentを配置します。これはあなたの問題かもしれません。 –