2012-12-04 17 views
5

में एक मैप व्यू रखने की इजाजत है, मैं एक ऐप बना रहा हूं जिसमें एक्शन बार और 2 टैब हैं। इस तरह: enter image description hereएंड्रॉइड मैप व्यू त्रुटि: आपको केवल नक्शा एक्टिविटी

टैब 1: क्लिक पर किसी स्थान के कुछ विवरण प्रदर्शित करना चाहिए। टैब 2: क्लिक पर नक्शे प्रदर्शित करना चाहिए।

मैं इसके लिए टुकड़े का उपयोग कर रहा हूं।

मेरे tablistener:

private class MyTabListener implements ActionBar.TabListener { 
     @Override 
     public void onTabSelected(Tab tab, 
       android.support.v4.app.FragmentTransaction ft) { 
      // TODO Auto-generated method stub 
      if (tab.getPosition() == 0) { 
       DetailsFragment fragment = new DetailsFragment(); 
       ft.replace(android.R.id.content, fragment); 

      } else { 
       MapsFragment fragment = new MapsFragment(); 
       ft.replace(android.R.id.content, fragment); 
       //ft.commit(); 
      } 
     } 

MapsFragment.java

public class MapsFragment extends MapFragment { 

    private MapView map = null; 
    private MyLocationOverlay me = null; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     return (new FrameLayout(getActivity())); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     map = new MapView(getActivity(), 
       "0rQAS47Cicu2t7z4w8Ev6A6de7QlbjvKyi8I-QQ"); 
     map.setClickable(true); 

     map.getController().setCenter(
       getPoint(40.76793169992044, -73.98180484771729)); 
     map.getController().setZoom(17); 
     map.setBuiltInZoomControls(true); 

     Drawable marker = getResources().getDrawable(R.drawable.marker); 

     marker.setBounds(0, 0, marker.getIntrinsicWidth(), 
       marker.getIntrinsicHeight()); 

     map.getOverlays().add(new SitesOverlay(marker)); 

     me = new MyLocationOverlay(getActivity(), map); 
     map.getOverlays().add(me); 

     ((ViewGroup) getView()).addView(map); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     me.enableCompass(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 

     me.disableCompass(); 
    } 

    private GeoPoint getPoint(double lat, double lon) { 
     return (new GeoPoint((int) (lat * 1000000.0), (int) (lon * 1000000.0))); 
    } 

    private class SitesOverlay extends ItemizedOverlay<OverlayItem> { 
     private List<OverlayItem> items = new ArrayList<OverlayItem>(); 

     public SitesOverlay(Drawable marker) { 
      super(marker); 

      boundCenterBottom(marker); 

      items.add(new OverlayItem(getPoint(40.748963847316034, 
        -73.96807193756104), "UN", "United Nations")); 
      items.add(new OverlayItem(getPoint(40.76866299974387, 
        -73.98268461227417), "Lincoln Center", 
        "Home of Jazz at Lincoln Center")); 
      items.add(new OverlayItem(getPoint(40.765136435316755, 
        -73.97989511489868), "Carnegie Hall", 
        "Where you go with practice, practice, practice")); 
      items.add(new OverlayItem(getPoint(40.70686417491799, 
        -74.01572942733765), "The Downtown Club", 
        "Original home of the Heisman Trophy")); 

      populate(); 
     } 

     @Override 
     protected OverlayItem createItem(int i) { 
      return (items.get(i)); 
     } 

     @Override 
     protected boolean onTap(int i) { 
      Toast.makeText(getActivity(), items.get(i).getSnippet(), 
        Toast.LENGTH_SHORT).show(); 

      return (true); 
     } 

     @Override 
     public int size() { 
      return (items.size()); 
     } 
    } 
} 

जब मैं पहली बार नक्शा प्रकट होता है के लिए नक्शे टैब पर क्लिक करें समस्या है। लेकिन वेन मैं विवरण टैब पर जाएँ और फिर से वापस नक्शे टैब के लिए आते हैं, मेरी ऐप्लिकेशन क्रैश एक त्रुटि के साथ:

Logcat:

12-04 03:28:02.228: E/AndroidRuntime(14466): FATAL EXCEPTION: main 
12-04 03:28:02.228: E/AndroidRuntime(14466): java.lang.IllegalStateException: You are only allowed to have a single MapView in a MapActivity 
12-04 03:28:02.228: E/AndroidRuntime(14466): at com.google.android.maps.MapActivity.setupMapView(MapActivity.java:398) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at com.google.android.maps.MapView.<init>(MapView.java:289) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at com.google.android.maps.MapView.<init>(MapView.java:235) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at com.m7.nomad.MapsFragment.onCreate(MapsFragment.java:34) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.support.v4.app.BackStackRecord.run(Unknown Source) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.support.v4.app.FragmentManagerImpl$1.run(Unknown Source) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.os.Handler.handleCallback(Handler.java:725) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.os.Looper.loop(Looper.java:137) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at android.app.ActivityThread.main(ActivityThread.java:5039) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at java.lang.reflect.Method.invokeNative(Native Method) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at java.lang.reflect.Method.invoke(Method.java:511) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
12-04 03:28:02.228: E/AndroidRuntime(14466): at dalvik.system.NativeStart.main(Native Method) 

क्या समस्या है। मुझे पता है कि नक्शा दृश्य खंड से फुलाया नहीं जा सकता है। लेकिन मैंने इस तकनीक का उपयोग किया: http://xrigau.wordpress.com/2012/03/22/howto-actionbarsherlock-mapfragment-listfragment/

लेकिन फिर भी यह काम नहीं करता है। मैं कुछ मदद की जरूरत है।

उत्तर

संबंधित मुद्दे