2014-01-24 5 views
0

Я новичок в разработке android, я создал простое приложение для отображения карты Google в своем эмуляторе, но во время ее запуска останавливается без отображения карты. Мне нужна помощь здесь. Я даю свой логарифм нижеGoogle map не работает

01-24 06:03:10.304: E/AndroidRuntime(1427): FATAL EXCEPTION: main 

01-24 06:03:10.304: E/AndroidRuntime(1427): java.lang.RuntimeException: Unable to start 

activity ComponentInfo{ca.sfu.cmpt276.bfraser/ca.sfu.cmpt276.bfraser.MainActivity}: 

android.view.InflateException: Binary XML file line #16: Error inflating class fragment 

01-24 06:03:10.304: E/AndroidRuntime(1427):  at 

android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 

01-24 06:03:10.304: E/AndroidRuntime(1427):  at 

android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 

01-24 06:03:10.304: E/AndroidRuntime(1427):  at android.app.ActivityThread.access$600 

(ActivityThread.java:141) 

01-24 06:03:10.304: E/AndroidRuntime(1427):  at android.app.ActivityThread$H.handleMessage 

(ActivityThread.java:1234) 

мой XML-файл и Java класс даяние ниже

<TextView 
    android:id="@+id/header" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" /> 
    <fragment 

     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.MapFragment" 
     android:layout_below="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 

     /> 
    </RelativeLayout> 

Мои class-

package ca.sfu.cmpt276.bfraser; 

    import com.google.android.gms.maps.GoogleMap; 
    import com.google.android.gms.maps.MapFragment; 


    import android.os.Bundle; 
     import android.app.Activity; 
     import android.view.Menu; 

     public class MainActivity extends Activity { 

    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

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

    @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
    } 

     } 

андроида файл манифеста

<?xml version="1.0" encoding="utf-8"?> 
     <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="ca.sfu.cmpt276.bfraser" 
     android:versionCode="1" 
     android:versionName="1.0" > 

     <uses-sdk 
    android:minSdkVersion="11" 
    android:targetSdkVersion="18" /> 
     <permission 
    android:name="ca.sfu.cmpt276.bfraser.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature"> 

     </permission> 
     <uses-permission android:name="android.permission.INTERNET" /> 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
     <uses-permission 
    android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
     <!-- 
     The following two permissions are not required to use 
     Google Maps Android API v2, but are recommended. 
     --> 
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
      <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 


     <application 
      android:allowBackup="true" 
      android:icon="@drawable/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme" > 
      <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="My API Key" /> 
     <activity 
     android:name="ca.sfu.cmpt276.bfraser.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     </activity> 
     </application> 

     </manifest> 
+1

Вы не должны раскрывать свой ключ api в открытом форуме –

+0

Совет: Если вы используете Eclipse, нажмите CTRL + SHIFT + F. Этот shprtcut форматирует код для вас. Это полезно прочитать. – Logi24

ответ

0

Добавьте этот мета-данные в манифесте:

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

см этот ответ:

Ссылка: error running google maps api v2

и добавить после разрешения в манифесте:

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

и обновить Google Play службы из SDK и снова импортировать услуги в Google Play в ваших ecilips от вашего SDK

0

Если вы хотите запустить Google карты в эмуляторе, нужно следовать this шаг за шагом процедуры, Я ответил в предыдущем вопросе.

0

Ваш XML имеет сбой

использовать этот код

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

и использование библиотеки андроида поддержка

0

Его глупая ошибка, которую

Вы должны использовать FragmentActivity, а активность здесь

заменить эту строку

public class MainActivity extends Activity 

с

public class MainActivity extends FragmentActivity 

Примечание: Чтобы использовать фрагмент карты вам нужно использовать "Android-поддержка-v13.jar", чтобы использовать фрагмент с backword совместимости.

Смежные вопросы