1

Я хотел бы показать карту google в своем приложении для Android. Я нашел пример, который был проверен мной, помещая его в основное действие. Это работает без проблем. Чтобы улучшить свое приложение, теперь я хотел бы перенаправить карту в другую деятельность (называемую DisplayMapActivity). Когда нажимается кнопка «Показать карту», ​​вызывается активность карты. Но мое приложение падает, и я получаю исключение nullpointer.Отображение карт google в действии (не MainActivity)

Мой проект example.com.lbsapp2 и вот некоторый код:

MainActivity.java:

public void openMap(View view) { 
    Intent intent = new Intent(this, DisplayMapActivity.class); 
    startActivity(intent); 
} 

Это вызывается при нажатии на кнопку. Он должен открыть карту.

activity_main.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.lbsapp2.MainActivity" 
tools:ignore="MergeRootFrame" /> 

fragment_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/welcome" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="openMap" 
     android:text="@string/button_map" /> 

</LinearLayout> 

DisplayMapActivity.java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
} 

Это работало в MainActivity.java без каких-либо проблем, поэтому код должно быть хорошо.

activity_display_map.xml (Layout):

<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.MapFragment"/> 

Это было в activity_main.xml раньше и работал отлично.

В манифесте должно быть хорошо, как и раньше.

ответ

0

В DisplayMapActivity изменить это

setContentView(R.layout.activity_main); 

в

setContentView(R.layout.activity_display_map); 

причиной MapFramgent в activity_display_map.xml.

Также getMap() может вернуть null. Поэтому проверьте наличие игровых сервисов google до инициализации GoogleMap объект

+0

Абсолютно правильно. Не видел этого. Огромное спасибо. Вы спасли мои выходные! – mosquito87

+0

@ mosquito87 добро пожаловать – Raghunandan

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