无法在内部类和活动类中启动活动

问题描述:

我从另一位开发人员那里获得了一个Android项目。他可以成功地在他的机器上启动这个项目,但是当我尝试在我的机器上启动它时,当应用程序试图在碎片中加载映射时,出现此异常。与异常的logcat:无法在内部类和活动类中启动活动

09-29 07:37:50.298 2442-2442/nz.co.tish.android.coffeetime E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{nz.co.tish.android.coffeetime/nz.co.tish.android.coffeetime.fragment.MapFragment$InnerActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class fragment 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
     at android.app.ActivityThread.startActivityNow(ActivityThread.java:2054) 
     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135) 
     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347) 
     at nz.co.tish.android.coffeetime.fragment.MapFragment.onCreate(MapFragment.java:132) 
     at android.support.v4.app.Fragment.performCreate(Fragment.java:1477) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:893) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) 
     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472) 
     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
     at android.support.v4.view.ViewPager.populate(ViewPager.java:1068) 
     at android.support.v4.view.ViewPager.populate(ViewPager.java:914) 
     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436) 
     at android.view.View.measure(View.java:15848) 
     at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:651) 
     at android.view.View.measure(View.java:15848) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
     at android.view.View.measure(View.java:15848) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012) 
     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302) 
     at android.view.View.measure(View.java:15848) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189) 
     at android.view.View.measure(View.java:15848) 
     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905) 
     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
     at android.view.Choreographer.doFrame(Choreographer.java:532) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
     at android.os.Handler.handleCallback(Handler.java:730) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5103) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class fragment 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:469) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267) 
     at android.app.Activity.setContentView(Activity.java:1895) 
     at nz.co.tish.android.coffeetime.fragment.MapFragmen 
09-29 07:42:50.399 2442-2442/nz.co.tish.android.coffeetime I/Process﹕ Sending signal. PID: 2442 SIG: 9 

Android清单:

android:versionCode="7" 
android:versionName="1.3" > 

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="18" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 

<permission 
    android:name="nz.co.tish.android.coffeetime.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

<uses-permission android:name="nz.co.tish.android.coffeetime.permission.C2D_MESSAGE" /> 

<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true" /> 

<application 
    android:name="nz.co.tish.android.coffeetime.CoffeetimeApplication" 
    android:allowBackup="true" 
    android:description="@string/app_desc" 
    android:icon="@drawable/app_logo57" 
    android:label="Coffeetime TISH Limited" 
    android:screenOrientation="portrait" 
    android:theme="@style/AppTheme" > 
    <uses-library android:name="com.google.android.maps" /> 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="AIzaSyDMx6IbAJEWnHuKv_yv4Pkwgx_U1mF2Qkc" /> 
    <!--Debug: AIzaSyDMx6IbAJEWnHuKv_yv4Pkwgx_U1mF2Qkc--> 
    <!--Live: AIzaSyCnNpNptAzaBdtF9GOAVw-POo1gt2Tsw-Q--> 
    <meta-data 
     android:name="com.google.android.gms.versionCode" 
     android:value="@integer/google_play_services_version" /> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.MainActivity" 
     android:label="@string/title_activity_main" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppMainTheme" > 
     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.app.searchable" 
      android:resource="@xml/searchable" /> 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.PlaceActivity" 
     android:label="@string/title_activity_place" 
     android:screenOrientation="portrait" > 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.ForgotPasswordActivity" 
     android:label="@string/title_activity_forgot_password" 
     android:screenOrientation="portrait" > 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.CVCInfoActivity" 
     android:label="@string/cvc_text_header" 
     android:screenOrientation="portrait" > 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.CategoryActivity" 
     android:label="@string/title_activity_category" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="nz.co.tish.android.coffeetime.MainActivity" /> 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.ProductActivity" 
     android:label="@string/title_activity_product" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="nz.co.tish.android.coffeetime.CategoryActivity" /> 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.CheckoutActivity" 
     android:label="@string/title_activity_checkout" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="nz.co.tish.android.coffeetime.PlaceActivity" /> 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.TopupActivity" 
     android:label="@string/title_activity_topup" 
     android:screenOrientation="portrait" > 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.RegisterCardActivity" 
     android:label="@string/title_activity_register_card" 
     android:screenOrientation="portrait" > 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.StoreMapActivity" 
     android:label="@string/store_map_title_activity" 
     android:screenOrientation="portrait" > 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.AuthActivity" 
     android:label="@string/title_activity_auth" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.VersionInfoActivity" 
     android:label="@string/title_activity_version" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="nz.co.tish.android.coffeetime.AuthActivity" /> 
    </activity> 
    <activity 
     android:name="nz.co.tish.android.coffeetime.TermsActivity" 
     android:label="@string/title_activity_terms" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <data android:scheme="launch.TermsActivity" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="nz.co.tish.android.coffeetime.AuthActivity" /> 
    </activity> 
    <activity 
    android:name="nz.co.tish.android.coffeetime.fragment.MapFragment$InnerActivity" 
     android:screenOrientation="portrait" /> 
    <activity 
     android:name=".LogoutActivity" 
     android:label="@string/title_activity_logout" 
     android:screenOrientation="portrait" /> 
    <activity 
     android:name=".LikeUsOnFacebookActivity" 
     android:label="Like Us On Facebook Activity" 
     android:screenOrientation="portrait" />  
</application> 

地图(MapFragment)的片段的代码:

public class MapFragment extends Fragment implements LocationListener { 
private static GoogleMap mapView; 
private static final String MAP_ACTIVITY_ID = "map-activity"; 
private static final String ACTIVITY_MANAGER_BUNDLE_KEY = "activity-manager-bundle-key"; 
private LocalActivityManager localActivityManager; 
private LocationManager locationManager = null; 
private Window window; 
private ProgressDialog dialog = null; 
private String bestProvider = null; 
private Criteria criteria = null; 
private String keyword = ""; 
private Place[] places; 
private HashMap<String, Place> currentPlaces; 
private AsyncTask<Object, Object, CallResult<List<Place>>> location_task; 
public static class InnerActivity extends 
     FragmentActivity { 
    @Override 
    protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setContentView(R.layout.fragment_map); 
     mapView = ((SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.mapv2)).getMap();    
    } 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = window.getDecorView(); 
    keyword = ((MainActivity) getActivity()).getSearchString(); 
    locationManager = (LocationManager) view.getContext().getSystemService(
      Activity.LOCATION_SERVICE); 
    if (locationManager == null) { 
     DialogUtil.showAlert(view.getContext(), 
       "Sorry, you do not seem to have GPS!"); 
     return null; 
    } 
    if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(intent); 
    } 
    criteria = new Criteria(); 
    bestProvider = locationManager.getBestProvider(criteria, false); 
    return view; 
} 
@Override 
public void onDestroyView() { 
    super.onDestroyView(); 
    ((ViewGroup) window.getDecorView().getParent()).removeAllViews(); 
} 
@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
} 
@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putBundle(ACTIVITY_MANAGER_BUNDLE_KEY, 
      localActivityManager.saveInstanceState()); 
} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bundle bundle = null; 
    if (savedInstanceState != null) { 
     bundle = savedInstanceState.getBundle(ACTIVITY_MANAGER_BUNDLE_KEY); 
    } 
    localActivityManager = new LocalActivityManager(getActivity(), true); 
    localActivityManager.dispatchCreate(bundle); 
    window = localActivityManager.startActivity(MAP_ACTIVITY_ID, 
      new Intent(getActivity(), InnerActivity.class)); 
} 
@Override 
public void onResume() { 
    super.onResume(); 
    localActivityManager.dispatchResume(); 
    places = ((MainActivity) getActivity()).getPlaces(); 
    location_task = null; 
    if (places == null) { 
     AsyncTask<Object, Object, Location> task = new AsyncTask<Object, Object, Location>() { 
      @Override 
      protected Location doInBackground(Object... params) { 
       return locationManager.getLastKnownLocation(bestProvider); 
      } 
      @Override 
      protected void onPostExecute(Location result) { 
       onLocationChanged(result); 
      } 
     }; 
     task.execute(); 
     locationManager.requestLocationUpdates(bestProvider, 1000 * 60 * 5, 
       25, this); 
    } else { 
     setUpMapview(places); 
    } 
} 
private void setUpMapview(Place[] places) { 
    // List<Overlay> mapOverlays = mapView.getOverlays(); 
    Drawable openPlace = this.getResources().getDrawable(R.drawable.opened); 
    Drawable closedPlace = this.getResources().getDrawable(
      R.drawable.closed); 
    List<GeoPoint> items = new ArrayList<GeoPoint>(); 
    currentPlaces = new HashMap<String, Place>(); 
    mapView.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 
     @Override 
     public void onInfoWindowClick(Marker coffe) { 
      if (currentPlaces != null) { 
       Intent intent = new Intent(getActivity(), 
         PlaceActivity.class); 
       intent.putExtra("place", 
         currentPlaces.get(coffe.getTitle())); 
       startActivity(intent); 
      } 
     } 
    }); 
    for (Place place : places) { 
     GeoPoint point = new GeoPoint((int) (place.getLatitude()), 
       (int) (place.getLongitude())); 
     items.add(point); 
     Marker placeMarker = mapView 
       .addMarker(new MarkerOptions() 
         .position(
           new LatLng(place.getLatitude(), place 
             .getLongitude())) 
         .title(place.getName()) 
         .icon(BitmapDescriptorFactory.fromResource(place 
           .isOpen() ? R.drawable.opened 
           : R.drawable.closed))); 

     currentPlaces.put(place.getName(), place); 
     // itemizedOverlay.addOverlay(overlayitem); 
     // mapOverlays.add(itemizedOverlay); 
    } 
    MapUtils.animateToCenter(mapView, items, false); 
} 
@Override 
public void onPause() { 
    super.onPause(); 
    localActivityManager.dispatchPause(getActivity().isFinishing()); 
} 
@Override 
public void onStop() { 
    super.onStop(); 
    localActivityManager.dispatchStop(); 
} 
@Override 
public void onDestroy() { 
    super.onDestroy(); 
    localActivityManager.dispatchDestroy(getActivity().isFinishing()); 
} 
@Override 
public void onDetach() { 
    super.onDetach(); 
    localActivityManager = null; 
} 
private class DialogOverlay extends SimpleItemizedOverlay { 
    public DialogOverlay(Drawable defaultMarker, MapView mapView) { 
     super(defaultMarker, mapView); 
    } 
    @Override 
    protected boolean onBalloonTap(int index, OverlayItem item) { 
     /* 
     * Intent intent = new Intent(mapView.getContext(), 
     * PlaceActivity.class); intent.putExtra("place", 
     * ((DialogOverlayItem)item).getCurrentPlace()); 
     * startActivity(intent); 
     */ 
     return true; 
    } 
} 
private class DialogOverlayItem extends OverlayItem { 

    private Place currentPlace; 

    public DialogOverlayItem(GeoPoint point, String title, String snippet, 
      Place place) { 
     super(point, title, snippet); 
     setCurrentPlace(place); 
    } 
    private Place getCurrentPlace() { 
     return currentPlace; 
    } 
    private void setCurrentPlace(Place currentPlace) { 
     this.currentPlace = currentPlace; 
    } 
} 

}

fragment_map。 xml:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/mapv2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 

MainActivity:

public class MainActivity extends FragmentActivity implements 
    ActionBar.TabListener { 
private ListView mDrawerList; 
private DrawerLayout mDrawerLayout; 
private ActionBarDrawerToggle mDrawerToggle; 
private CharSequence mDrawerTitle; 
private CharSequence mTitle; 
private SectionsPagerAdapter mSectionsPagerAdapter; 
CustomViewPager mViewPager; 
private Place[] places; 
private String keyword = ""; 
private boolean checkedOut; 
public Place[] getPlaces() { 
    return places; 
} 
public void setPlaces(Place[] places) { 
    this.places = places; 
} 
    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: 
      return new MyFavoritesFragment(); 
     case 1: 
      return new NearMeFragment(); 
     case 2: 
      return new MapFragment(); 
     case 3: 
      return new HistoryFragment(checkedOut); 
     case 4: 
      return new WalletFragment(); 
     } 
     return null; 
    } 
    @Override 
    public int getCount() { 
     return 5; 
    } 
    public int getPageIcon(int position) { 
     switch (position) { 
      case 0: 
       return R.drawable.icon_fav; 
      case 1: 
       return R.drawable.icon_near; 
      case 2: 
       return R.drawable.icon_map; 
      case 3: 
       return R.drawable.icon_hist; 
      case 4: 
       return R.drawable.icon_wallet; 
     } 
     return 0; 
    } 
    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
     case 0: 
      return getString(R.string.title_activity_my_favorites).toUpperCase(); 
     case 1: 
      return getString(R.string.title_activity_near_me).toUpperCase(); 
     case 2: 
      return getString(R.string.title_activity_map).toUpperCase(); 
     case 3: 
      return getString(R.string.title_activity_history).toUpperCase(); 
     case 4: 
      return getString(R.string.title_activity_wallet).toUpperCase(); 
     } 
     return null; 
    } 
} 

}

此应用程序也有地图的另一个活动,和应用程序太崩溃就可以了。该logcat的:

09-29 08:33:50.559 2604-2604/nz.co.tish.android.coffeetime E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{nz.co.tish.android.coffeetime/nz.co.tish.android.coffeetime.StoreMapActivity}: android.view.InflateException: Binary XML file line #3: Error inflating class fragment 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4242000 but found 0. You must have the following declaration within the <application> element:  <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> 
     at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source) 
     at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source) 
     at com.google.android.gms.maps.internal.q.v(Unknown Source) 
     at com.google.android.gms.maps.internal.q.u(Unknown Source) 
     at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source) 
     at com.google.android.gms.maps.SupportMapFragment$b.ex(Unknown Source) 
     at com.google.android.gms.maps.SupportMapFragment$b.a(Unknown Source) 
     at com.google.android.gms.dynamic.a.a(Unknown Source) 
     at com.google.android.gms.dynamic.a.onInflate(Unknown Source) 
     at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source) 
     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:290) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 

StoreMapActivity:

public class StoreMapActivity extends FragmentActivity { 

private Place place = null; 
private GoogleMap mapView; 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     onBackPressed(); 
     return (true); 
    } 

    return (super.onOptionsItemSelected(item)); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getActionBar().setDisplayHomeAsUpEnabled(true); 

    setContentView(R.layout.store_map_activity); 
    mapView = (GoogleMap) ((SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.store_mapv2)).getMap(); 

    Serializable placeSer = getIntent().getSerializableExtra("place"); 
    if (placeSer == null 
      || !Place.class.isAssignableFrom(placeSer.getClass())) { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     finish(); 
     return; 
    } 

    place = (Place) placeSer; 
    setUpMapview(); 
    /*List<Overlay> mapOverlays = mapView.getOverlays(); 
    Drawable openPlace = this.getResources().getDrawable(R.drawable.opened); 
    Drawable closedPlace = this.getResources().getDrawable(
      R.drawable.closed); 
    List<GeoPoint> items = new ArrayList<GeoPoint>(); 
    SimpleItemizedOverlay itemizedOverlay = new SimpleItemizedOverlay(
      place.isOpen() ? openPlace : closedPlace, mapView); 

    GeoPoint point = new GeoPoint(
      (int) (place.getLatitude() * Const.GEOPOINT_CONST), 
      (int) (place.getLongitude() * Const.GEOPOINT_CONST)); 
    items.add(point); 
    OverlayItem overlayitem = new OverlayItem(point, place.getName(), ""); 

    itemizedOverlay.addOverlay(overlayitem); 
    mapOverlays.add(itemizedOverlay); 

    // MapUtils.animateToCenter(mapView, items, true);*/ 
} 

private void setUpMapview() { 

Drawable openPlace = this.getResources().getDrawable(R.drawable.opened); 
Drawable closedPlace = this.getResources().getDrawable(
      R.drawable.closed); 
List<GeoPoint> items = new ArrayList<GeoPoint>(); 
mapView.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 
@Override 
public void onInfoWindowClick(Marker coffe) { 
      if (place != null) { 

       Intent intent = new Intent(StoreMapActivity.this, 
         PlaceActivity.class); 
       intent.putExtra("place", place); 
       startActivity(intent); 
      } 

     } 
    }); 

GeoPoint point = new GeoPoint((int) (place.getLatitude()),(int)(place.getLongitude())); 
items.add(point); 
Marker placeMarker = mapView.addMarker(new MarkerOptions().position(
          new LatLng(place.getLatitude(), place.getLongitude())) 
        .title(place.getName()) 
        .icon(BitmapDescriptorFactory.fromResource(place 
          .isOpen() ? R.drawable.opened 
          : R.drawable.closed))); 

MapUtils.animateToCenter(mapView, items, false); 

} 

}

store_map_activity.xml:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/store_mapv2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:name="com.google.android.gms.maps.SupportMapFragment"/> 

当我评论的代码initiali在应用程序的这些部分上绘制地图,它将开始正常工作。

+0

还有什么可无在线17 xml文件fragment_map? – 2014-09-30 06:19:10

+0

17行 - > Palladyi 2014-09-30 06:26:54

+0

在xmlns之后是thr分号:android =“schemas.android.com/apk/res/android”line – 2014-09-30 06:28:47

请确认您已将例外添加到您的proguard配置文件中。如何以及如何加入Setting up Google Play Services

被解释为第一,你的片段从:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/mapv2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 

这样:

<fragment 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/map" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

在这种情况下,主要区别是

class="com.google.android.gms.maps.SupportMapFragment" 

对此:

android:name="com.google.android.gms.maps.SupportMapFragment" 

对于第二种情况:将以下内容添加到清单的末尾(但是需要结束标记应用程序!)

<meta-data 
    android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" /> 

在你的代码可以要求服务有以下:

// check status 
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 

try { 
    if (status != ConnectionResult.SUCCESS) 
    { 
     GooglePlayServicesUtil.getErrorDialog(status, this, RQS_GooglePlayServices).show(); 
    } 
} catch (Exception e) { 
    Log.e("Error: ", + e); 
}