दिलचस्प पोस्ट
लाइन द्वारा एक फ़ाइल लाइन में (अपडेट) टेक्स्ट को कैसे बदलें LINQ जहां अधिग्रहण और मामले को अनदेखा करें एंड्रॉइड में एक गतिविधि से किसी स्ट्रिंग को एक अन्य गतिविधि में पास करें नियंत्रण का उलटा क्या है? जावास्क्रिप्ट में कस्टम कॉलबैक बनाएं COUNT प्रति मूल्य के अनुसार आदेश गहरी लैम्ब्डा अभिव्यक्ति में नल की जांच कैसे करें? जांचें कि क्या एक जावास्क्रिप्ट स्ट्रिंग यूआरएल है जावास्क्रिप्ट: दो सरणियों को एक सरणी में जोड़ने के लिए कैसे जुड़ें / संयोजन करें? मैं जावास्क्रिप्ट के साथ फाइल एक्सटेंशन कैसे प्राप्त करूं? अंगुलुज जैस्मीन यूनिट टेस्ट में वादा करने वाली एक सेवा का मैं कैसे मजाक कर सकता हूं? onActivityResult () समय से पहले कहा जाता है जांच अगर एक चेकबॉक्स jQuery के साथ चेक किया गया है दोहरे उद्धरण के अंदर डबल उद्धरण कैसे बचें? शब्दों को शरीर के टेक्स्ट में बदलें

एक टुकड़ा (हनीकॉब) में मानचित्रदृश्य

अब जब अंतिम एसडीके गूगल एपीआईएस के साथ बाहर है – एक नक्शादृश्य के साथ एक टुकड़ा बनाने का सबसे अच्छा तरीका क्या है? MapView को सही काम करने के लिए MapActivity की आवश्यकता है

मैप ऐक्टिविटी से बंटवारे वाले कार्यों को प्रबंधित करने के बाद गतिविधि (बुरा समाधान क्योंकि यह विचार है कि टुकड़े स्वयं निहित हैं) के खिलाफ होता है और एक नियमित एक्सएमएल आधारित लेआउट का इस्तेमाल नहीं करता है। मुझे MapActivity.setupMapView () में एक NullPointerException मिलता है:

 ई / एंड्रॉइड रेंटाइम (597): द्वारा कारण: java.lang.NullPointerException
 E / AndroidRuntime (597): com.google.android.maps.MapActivity.setupMapView पर (MapActivity.java:400)
 E / AndroidRuntime (597): com.google.android.maps.MapView पर (MapView.java:289)
 E / AndroidRuntime (597): com.google.android.maps.MapView पर। (MapView.javamore64)
 E / AndroidRuntime (597): com.google.android.maps.MapView पर। (MapView.javauxe47)

मेरा दूसरा विचार मानचित्रविय प्रोग्राम को बनाने और संबंधित गतिविधि को प्राप्त करने के लिए (GetActivity () के माध्यम से) MapView कन्स्ट्रक्टर के संदर्भ के रूप में था काम नहीं करता:

 ई / एंड्रॉइड रेंटाइम (834): द्वारा कारण: java.lang.IllegalArgumentException: MapViews केवल MapActivity के उदाहरणों में बनाया जा सकता है
 E / AndroidRuntime (834): com.google.android.maps.MapView पर (MapView.javaociety91)
 E / AndroidRuntime (834): com.google.android.maps.MapView पर। (MapView.java:235)
 ई / एंड्रॉइड रेंटाइम (834): at.foo.FinderMapFragment.onCreateView (FinderMapFragment.java ,2525)
 ई / एंड्रॉइड रेंटाइम (834): एंड्रॉइड.एफ़.फ्रैगमेंटमेनैजरआईएमपीएल.मोवटोस्टेट (फ्रैग्मेंट मैनेजर। जावाः 708)
 ई / एंड्रॉइड रेंटाइम (834): एंड्रॉइड.एफ़.फ्रैगमेंटमेनैजरआईएमपीएल.मोवटोस्टेट (फ्रैग्मेंट मैनेजर। जावाः 9 00)
 ई / एंड्रॉइड रेंटाइम (834): एंड्रॉइड.एफ़.फ़्रेग्मेंटमेनैजरआईएमपीएलएडप्रगमेंट (फ्रैगमेंट मैनेजर। जावाः 9 78)
 ई / एंड्रॉइड रेंटाइम (834): एंड्रॉइड। एप। एक्टिविटी.नक्रेटिव्यू (गतिविधि.जावा 40 9)
 ई / एंड्रॉइड रेंटाइम (834): एंड्रॉइड पर। View.LayoutInflater.createViewFromTag (LayoutInflater.java:664)

वास्तव में MapFragment की तरह कुछ होना चाहिए जो पृष्ठभूमि थ्रेड्स का ध्यान रखता है MapView की आवश्यकता है मुझे लगता है … तो यह करने के लिए वर्तमान सर्वोत्तम अभ्यास क्या है?

धन्यवाद और जर्मनी से धन्यवाद, वैलेन्टिन

वेब के समाधान से एकत्रित समाधान "एक टुकड़ा (हनीकॉब) में मानचित्रदृश्य"

03.12.2012 तक Google ने गूगल मैप्स एंड्रॉइड एपीआई v2 जारी किया। अब आप इन समस्याओं के बारे में भूल सकते हैं। https://developers.google.com/maps/documentation/android/

नए एपीआई का उपयोग करते हुए उदाहरण – https://developers.google.com/maps/documentation/android/start#add_a_map

यह API कम से कम एंड्रॉइड एपीआई 8 के लिए काम करेगा, इसलिए इसका उपयोग करें;)

तो अब आप बस "com.google.android.gms.maps.MapFragment" खंड वर्ग का उपयोग कर सकते हैं। यह आपके गतिविधि में मानचित्र प्रदर्शित करेगा। उपरोक्त लिंक से लेआउट का उदाहरण:

<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment"/> 

मैंने इसे TabHost का टुकड़ा में उपयोग करके इसे हल करने में कामयाबी हासिल की है।

यहां विचार (संक्षिप्त) है:

  1. MainFragmentActivity FragmentActivity MainFragmentActivity (समर्थन लाइब्रेरी से) तक फैली हुई है और MapFragment

  2. MyMapActivity फैली हुई है और MapView शामिल है।

  3. LocalActivityManagerFragment मेजबान LocalActivityManager

  4. MapFragment बढ़ाता है।

  5. और LocalActivityManager में इसमें MyMapActivity गतिविधि है।

उदाहरण कार्यान्वयन: https://github.com/inazaruk/map-fragment


यहां छवि विवरण दर्ज करें

जैसा कि Google समूह में चर्चा की गई, पीटर डोयले ने Google Maps को भी एक कस्टम संगतता लाइब्रेरी का निर्माण किया। android-समर्थन-v4-GoogleMaps

हालांकि, एक नकारात्मक पक्ष भी है:

वर्तमान में, एक नकारात्मक पक्ष यह है कि फ्रैगमेंट ऐक्टिविटी का विस्तार करने वाले सभी वर्ग मैपएक्टिविटी हैं इसकी एक अलग कक्षा (यानी फ्रैग्मेंटमैपएक्टिविटी) बनाने के लिए संभव है, लेकिन इसमें फ्रेग्मेंट ऍक्टिविटी कोड के कुछ रिफैक्टरिंग की आवश्यकता है।

बस जवाब स्पष्ट करने के लिए मैंने इनजरुक और क्रिस्टोफ के सुझावों का सुझाव दिया। वास्तव में आप किसी भी गतिविधि को किसी टुकड़े में चला सकते हैं – न सिर्फ Google नक्शे। ये कोड है जो Google मैप गतिविधि को टुकड़े टुकड़े के रूप में लागू करता है, इनज़ूरुक और क्रिस्टोफ के लिए धन्यवाद।

 import com.actionbarsherlock.app.SherlockFragment; import android.view.Window; import android.app.LocalActivityManager; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class MapFragment extends SherlockFragment { private static final String KEY_STATE_BUNDLE = "localActivityManagerState"; private LocalActivityManager mLocalActivityManager; protected LocalActivityManager getLocalActivityManager() { return mLocalActivityManager; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle state = null; if (savedInstanceState != null) { state = savedInstanceState.getBundle(KEY_STATE_BUNDLE); } mLocalActivityManager = new LocalActivityManager(getActivity(), true); mLocalActivityManager.dispatchCreate(state); } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //This is where you specify you activity class Intent i = new Intent(getActivity(), GMapActivity.class); Window w = mLocalActivityManager.startActivity("tag", i); View currentView=w.getDecorView(); currentView.setVisibility(View.VISIBLE); currentView.setFocusableInTouchMode(true); ((ViewGroup) currentView).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); return currentView; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBundle(KEY_STATE_BUNDLE, mLocalActivityManager.saveInstanceState()); } @Override public void onResume() { super.onResume(); mLocalActivityManager.dispatchResume(); } @Override public void onPause() { super.onPause(); mLocalActivityManager.dispatchPause(getActivity().isFinishing()); } @Override public void onStop() { super.onStop(); mLocalActivityManager.dispatchStop(); } @Override public void onDestroy() { super.onDestroy(); mLocalActivityManager.dispatchDestroy(getActivity().isFinishing()); } } 

इस पर Google की शानदार खबरें वे आज एक नया Google मानचित्र एपीआई जारी कर रहे हैं, इनडोर मानचित्र और मैपफ्रैग्मेंट के साथ।

 With this new API, adding a map to your Activity is as simple as: <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment" /> 

Google मानचित्र एपीआई AOSP का हिस्सा नहीं है। जब तक कोई Googler का जवाब नहीं देता तब तक यह बताना संभव नहीं है कि भविष्य में कोई मानचित्रण होगा।

WebViewFragment एक सीमित सीमित विकल्प एक WebViewFragment का उपयोग WebViewFragment और इसे एक कस्टम maps.google.com URL लोड करने के लिए दुरुपयोग करना है।

एचएम बहुत बुरा है कि Google ने अभी तक इसका जवाब नहीं दिया है FWIW अगर आपको वास्तव में ऐसा करने की आवश्यकता है तो मुझे इससे कोई अन्य रास्ता नहीं मिला:

टैब मैनेजिंग एक्टिविटी को मैपएक्टिविटी से निकलते हैं, इसमें मानचित्रव्यू को प्रोग्राममैटिक रूप से बनायें, मैपफ्रेममेंट। एक्सएमएल में एक व्यू ग्रुप शामिल है और मैप-वीव को व्यू ग्रुप में डालें।

 ((ViewGroup) getFragmentManager ()। FindFragmentById (R.id.finder_map_fragment) .getView ())। AddView (mapView) ;;

जाहिर है यह इस विचार के खिलाफ दृढ़ता से है कि टुकड़ों को आत्मनिर्भर होना चाहिए, लेकिन …

यहां एक मोनोइड्रॉइड ( एंड्रॉइड के लिए मोनो ) संस्करण बहुत ही सरलीकृत मानचित्रफ्रैग्मेंट का है :

 public class MapFragment : Fragment { // FOLLOW http://stackoverflow.com/questions/5109336/mapview-in-a-fragment-honeycomb private static String KEY_STATE_BUNDLE = "localActivityManagerState"; public override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Bundle state = null; if (savedInstanceState != null) { state = savedInstanceState.GetBundle(KEY_STATE_BUNDLE); } mLocalActivityManager = new LocalActivityManager(Activity, true); mLocalActivityManager.DispatchCreate(state); } public override Android.Views.View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //This is where you specify you activity class Intent i = new Intent(Activity, typeof(SteamLocationMapActivity)); Window w = mLocalActivityManager.StartActivity("tag", i); View currentView=w.DecorView; currentView.Visibility = ViewStates.Visible; currentView.FocusableInTouchMode = true; ((ViewGroup) currentView).DescendantFocusability = DescendantFocusability.AfterDescendants; return currentView; } private LocalActivityManager mLocalActivityManager; protected LocalActivityManager GetLocalActivityManager() { return mLocalActivityManager; } public override void OnSaveInstanceState(Bundle outState) { base.OnSaveInstanceState(outState); outState.PutBundle(KEY_STATE_BUNDLE,mLocalActivityManager.SaveInstanceState()); } public override void OnResume() { base.OnResume(); mLocalActivityManager.DispatchResume(); } public override void OnPause() { base.OnPause(); mLocalActivityManager.DispatchPause(Activity.IsFinishing); } public override void OnStop() { base.OnStop(); mLocalActivityManager.DispatchStop(); } } 

यह मेरे मुद्दे को टुकड़ों में MapView जोड़ने में हल करता है। https://github.com/petedoyle/android-support-v4-googlemaps

एबीएस 4.0 के नए संस्करण के साथ, मैपफ्रैग्मेंट ऍक्टिविटी के लिए कोई समर्थन नहीं है, यहां एक टुकड़ा में एक नक्शादृश्य होने के लिए एक अच्छा समाधान है!

https://xrigau.wordpress.com/2012/03/22/howto-actionbarsherlock-mapfragment-listfragment/#comment-21

मुझे समाधान मिल सकता है:

  1. क्लास TempFragment सक्रियता बनाएँ MapActivity फैलता है
  2. TempFragmentActivity के भीतर एक MapView ऑब्जेक्ट (जैसे सामान्य में XML परिभाषित करता है)
  3. इस MapView ऑब्जेक्ट फ़ॉर्म पैरेंट (LinearLayout) को हटा दें (शून्य बाद में अपवाद)
  4. कहीं भी इस MapView ऑब्जेक्ट को रखें (उदा: TempFragmentActivity के स्थिर सदस्य)
  5. अपने टुकड़े में, इस MapView वस्तु को कुछ LinearLayout में कोड (xml में परिभाषित न करें) का उपयोग करके जोड़ें

मैंने MapFragment समस्या में LocalActivityManager- आधारित समाधानों को मैश करने के लिए एक छोटी लाइब्रेरी लिखा, (इसमें विभिन्न उपयोग स्थितियों को प्रदर्शित करने वाला उदाहरण भी शामिल है):

https://github.com/coreform/android-tandemactivities