Ответ 1
Вам нужно расширить FragmentActivity
, если вы используете SupportMapFragment
.
Если вы используете MapFragment
, вы можете расширить Activity
.
Я пытаюсь запустить одно из своих приложений в Google Maps API v2 впервые. Я создал ключ для своего приложения в своем хранилище ключей, извлек хэш SHA1, приобрел ключ API, а затем сделал следующее в приложении... Я включил:
Google-игра-services.jar
а также импортировать библиотеку GooglePlayServices и добавить ее в качестве ссылки на проект. В моем Java-коде я просто загружаю ресурс макета.
public class Times extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
}
}
В макете (res/layout/map.xml), который я пытаюсь создать, я:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
В моем манифесте также указано следующее:
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="tinyTech.us.ua.busschedule.permission.MAPS_RECEIVE" />
<permission
android:name="tinyTech.us.ua.busschedule.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
И объявлен в теге Application манифеста:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="My_API_Key" />
Когда активность загружена, она вылетает со следующими ошибками в LogCat:
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
Я попытался исследовать проблему, однако я не смог найти то, что искал. Любая помощь приветствуется.
Вам нужно расширить FragmentActivity
, если вы используете SupportMapFragment
.
Если вы используете MapFragment
, вы можете расширить Activity
.
В своем макете используйте
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
вместо
...
android:name="com.google.android.gms.maps.SupportMapFragment"
...
Вы должны сделать это:
public class MainActivity extends android.support.v4.app.FragmentActivity{
}
Это сработало для меня: fooobar.com/questions/24840/...
Похоже, вам нужно добавить сервисы Google Play в качестве модуля, а не только как .jar
Я решил эту ошибку, проверив " Скопировать проекты в рабочее пространство" при импорте библиотеки Google Play Services.
Подробнее здесь: http://developer.android.com/google/play-services/setup.html
У меня была такая же проблема с Google Play Services и все такое.. Я включил в качестве библиотеки и все, и проблема все еще сохранялась ( " не удалось найти com.google.android.gms.maps.suportmapfragment" )..
я смог исправить это: Переход к свойствам проекта. затем выберите путь сборки Java. Затем выберите вкладку Заказ и Экспорт. тогда, Убедитесь, что вы отметили Зависимости Android и Частных библиотек Android
Надеюсь, что это поможет:)
Я добавил <uses-library android:name="com.google.android.maps" />
в файл манифеста.
Это сработало для меня!
Я думаю, что у меня была такая же проблема, кажется, что более новые версии вы должны добавить эту строку в манифест
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
В моем случае я добавляю:
Файл → Создать → Google → Активность в Google Картах
И я следую этому учебник.