2012-06-24 1 views
0

У меня есть проблемы с доступом к Hello Mapview в данный момент, http://developer.android.com/training/tutorials/views/hello-mapview.html, но я думаю, что это сделано правильно. Я хочу показать карту в отдельном упражнении.Карта Google в отдельной деятельности, в результате чего: java.lang.IllegalStateException: Не удалось выполнить способ действия

Map.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<com.google.android.maps.MapView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mapview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:clickable="true" 
    android:apiKey="working key" 
    /> 

</LinearLayout> 

Кнопка OnClick событие, которое должно показать, моя карта

public void showMap(View v){ 

    Intent intent = new Intent(getBaseContext(), GoogleMapsActivity.class); 
    startActivity(intent); 
} 

GoogleMapsActivity.java

public class GoogleMapsActivity extends MapActivity 
{ 
MapView mapView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map); 

    mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 
} 

Активность добавлена ​​в мой манифест, Google apis включен и т. Д. Его работа, если я поместил карту в свою основную деятельность, но не в мой GoogleMapsActivity. Пожалуйста, скажите мне, что ive пропустил здесь.

Благодаря

+0

Вы уже поставить здесь весь код? – Sajmon

+0

@ hawaii.five-0 Что я считаю соответствующей частью. Хочешь увидеть что-нибудь еще? – Johan

+0

где исключение? в какой строке? – Ran

ответ

0

https://developers.google.com/maps/documentation/android/reference/ От:

Только один MapActivity поддерживается для каждого процесса. Несколько одновременных действий MapActivities могут влиять на неожиданные и нежелательные способы.

В принципе, вы можете иметь только 1 MapActivity и MapView s могут быть размещены только в MapActivity. То, что вы хотите в принципе, невозможно.

EDIT: не уверен, что это сработает для вас, но вы можете попробовать отметить свою вторую активность android:process=":remote" и посмотреть, работает ли это, но я сомневаюсь.

РЕДАКТОРА: есть, по-видимому, некоторое замешательство. Посмотрите на https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/MapView. Это означает, что:

MapView может быть сконструирован (или завышен) только MapActivity. Это связано с тем, что он зависит от потоков, которые обращаются к сети и файловой системе в фоновом режиме; эти потоки должны быть увлечены управлением жизненным циклом в MapActivity. Плитки кэшируются в файловой системе в каталоге вашего приложения. Кэш автоматически управляется, поэтому вам не нужно ничего с ним делать, и его можно удалить в любое время.

Я буду повторять итерацию: вы НЕ МОЖЕТЕ отображать MapView в любом другом действии.

+1

Он просто хочет показать карту в другом действии, ему не нужны два класса «MapActivity». – Ran

+0

Спасибо, но его так же, как сказал Ран. Но я обнаружил проблему, хотя, опечатку моей деятельности в моем файле манифеста:/ – Johan

+0

А: у вас нет ЛЮБОЙ рабочей MapActivity. Я думал, что у тебя есть одна работа, и я не мог заставить другого работать. – Femi

0

Проблема была опечатка в моем файле манифеста,

<activity android:name=".GoogleMapActivity" /> //missing an "s" 
Смежные вопросы