2014-01-31 5 views
1

Я пытаюсь добавить Google MAP Api v2 в мое приложение. Но я получаю исключение. Исключение составляетAndroid google map

java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.googlemapsv2/info.androidhive.googlemapsv2.MainActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class fragment 

Вот мой XML-класс

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

</RelativeLayout> 

это мой основной класс

public class MainActivity extends Activity { 
    private GoogleMap _googleMap=null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     try 
     { 
      //loading map 
      initilizeMap(); 
      _googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

      _googleMap.setMyLocationEnabled(true);  

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 


    private void initilizeMap() { 
     if(_googleMap==null) 
     { 
      _googleMap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap(); 
      if (_googleMap == null) { 
       Toast.makeText(getApplicationContext(), 
         "Sorry! unable to create maps", Toast.LENGTH_SHORT) 
         .show(); 
      } 
     } 

    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     initilizeMap(); 
    } 

} 

это мой LogCat

01-31 14:20:55.603: E/AndroidRuntime(311): FATAL EXCEPTION: main 
01-31 14:20:55.603: E/AndroidRuntime(311): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo/com.example.demo.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.os.Looper.loop(Looper.java:123) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-31 14:20:55.603: E/AndroidRuntime(311): at java.lang.reflect.Method.invokeNative(Native Method) 
01-31 14:20:55.603: E/AndroidRuntime(311): at java.lang.reflect.Method.invoke(Method.java:521) 
01-31 14:20:55.603: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-31 14:20:55.603: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-31 14:20:55.603: E/AndroidRuntime(311): at dalvik.system.NativeStart.main(Native Method) 
01-31 14:20:55.603: E/AndroidRuntime(311): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.inflate(LayoutInflater.java:407) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
01-31 14:20:55.603: E/AndroidRuntime(311): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.Activity.setContentView(Activity.java:1647) 
01-31 14:20:55.603: E/AndroidRuntime(311): at com.example.demo.MainActivity.onCreate(MainActivity.java:22) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
01-31 14:20:55.603: E/AndroidRuntime(311): ... 11 more 
01-31 14:20:55.603: E/AndroidRuntime(311): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.example.demo-2.apk] 
01-31 14:20:55.603: E/AndroidRuntime(311): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
01-31 14:20:55.603: E/AndroidRuntime(311): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
01-31 14:20:55.603: E/AndroidRuntime(311): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.createView(LayoutInflater.java:466) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:544) 
01-31 14:20:55.603: E/AndroidRuntime(311): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66) 
01-31 14:20:55.603: E/AndroidRuntime(311): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
+2

Пожалуйста, ваши полный код и логарифм. Благодарю. – fasteque

+0

Попытайтесь расширить FragmentActivity .... –

+0

i did.but дайте то же самое исключение –

ответ

2

Вы должны использовать SupportMapFragment вместо MapFragment.

Изменить

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

в

<fragment 
android:id="@+id/map" 
android:name="com.google.android.gms.maps.SupportMapFragment" 
android:layout_width="match_parent" 
android:layout_height="match_parent"/> 

Также измените

_googleMap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap(); 

в

_googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
     R.id.map)).getMap(); 

А также Если вы используете фрагменты на старых устройствах (pre Honeycomb), вы всегда должны расширять Activity от FragmentActivity.

, а также проверить

Добавьте Google Play версии услуги для вашего приложения манифест

Редактировать файл AndroidManifest.xml вашего приложения, и добавьте следующую декларацию в элементе. Это включает версию сервисов Google Play, с которой было скомпилировано приложение.

Вам просто нужно добавить <meta-data> под <application> тег в ваш AndroidManifest.xml

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

Это потому, что latest google play services requires a version name, which is to be mentioned using <meta-data .. /> inside AndroidManifest.xml

0

В вашем XML попытаться изменить от

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

в

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

Проверьте, если эту работу.

0

Если вы используете фрагменты вашей MainActivity сусло распространяется FragmentActivity:

public class MainActivity extends FragmentActivity { 
    //Stuff 
} 

Если вы используете поддержку-библиотеку, так что вы можете использовать фрагменты в более низких уровнях Android API использовать Это:

public class MainActivity extends android.support.v4.app.FragmentActivity{ 
    //Stuff 
} 

И использовать SupportFragmentMap в вашем XML:

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/>