मेरे पास एक उपयोग केस है जहां एक सूची और नक्शा दृश्य एक ही कोड आधार साझा करते हैं और एक ही डेटा दिखाते हैं। इसलिए मैं उन्हें सूची के रूप में ListFragment और MapFragment का उपयोग करके अलग नहीं कर सकता।एक टुकड़े के अंदर एक नक्शा दृश्य कैसे बनाए रखें?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"/>
<com.google.android.gms.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
उपयोगकर्ता सूची और नक्शे दृश्य के बीच टॉगल कर सकते हैं:
तो मैं एक टुकड़ा है कि दोनों विचारों में शामिल कर दिया। इस तथ्य के बावजूद यह बहुत अच्छी तरह से काम करता है कि मानचित्र दृश्य कॉन्फ़िगरेशन परिवर्तनों पर अपने मार्कर बनाए रख नहीं सकता है। जब स्क्रीन घुमाया जाता है, तो मानचित्र दृश्य मार्करों के बिना और ज़ूम के बिना प्रारंभिक स्थिति प्राप्त करता है। सभी मार्कर जो पहले जोड़े गए थे। जब मैंने मैपफ्रैगमेंट का उपयोग किया तो मुझे यह समस्या नहीं थी, यह खुद को बनाए रखा।
public class ListAndMapFragment extends Fragment {
private MapView mapView;
public ListAndMapFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle arguments) {
super.onCreateView(inflater, container, arguments);
View root = inflater.inflate(R.layout.fragment_pillar_list, container, false);
mapView = (MapView) root.findViewById(R.id.mapView);
if (arguments == null) {
mapView.onCreate(null);
MapsInitializer.initialize(this.getActivity());
}
return root;
}
private GoogleMap getMap() {
return mapView.getMap();
}
@Override
public void onResume() {
mapView.onResume();
super.onResume();
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
}
कोई भी विचार कैसे इस समस्या का समाधान करने के लिए:
नीचे कोड Stripped? एक समाधान सभी मार्करों को प्रतिस्थापित करना होगा। हालांकि मैं जानना चाहता हूं कि कोई और दृष्टिकोण है या नहीं।
मुझे लगता है कि मुझे setRetainInstance को हटाना है क्योंकि SaveInstanceState को नहीं कहा जाएगा? –
यह सही है :) – nem035
@artworkad シ अच्छा, मुझे खुशी है कि आप एक उपयुक्त समाधान खोजने में कामयाब रहे। यह समस्या वास्तव में बहुत अच्छी तरह से ज्ञात है और दुर्भाग्यवश यहां कोई समाधान नहीं है https:// दुर्भाग्यवश https://code.google.com/p/gmaps-api-issues/issues/detail?id=4650 समाधानों की विविधताओं के अलावा मैंने यहां सुझाया है। – nem035