में एक मैप व्यू रखने की इजाजत है, मैं एक ऐप बना रहा हूं जिसमें एक्शन बार और 2 टैब हैं। इस तरह: एंड्रॉइड मैप व्यू त्रुटि: आपको केवल नक्शा एक्टिविटी
टैब 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/
लेकिन फिर भी यह काम नहीं करता है। मैं कुछ मदद की जरूरत है।