findViewById возвращает null для чего-либо, если mapview включен в родительский макет - PullRequest
0 голосов
/ 04 февраля 2012

У меня странная проблема в том, что findViewById будет возвращать ноль для всего, если я использую включение в моем макете.

Это мой onCreate(), активность расширяется MapActivity

@Override
    public void onCreate(Bundle bundle)
    {
        super.onCreate(bundle);
        setContentView(R.layout.main);
                // this will be null
        MapView myMapViewmyMapView = (MapView) findViewById(R.id.mapview);

    }

А это мой макет, main.xml

<!-- Loads of other layout elements up here, buttons, headers etc-->
<LinearLayout android:layout_width="fill_parent"
                  android:id="@+id/demo_mode_layout"
                  android:orientation="vertical"
                  android:layout_height="wrap_content"
                  android:gravity="center_horizontal"
                  android:background="@drawable/panel"
                  android:layout_marginTop="5dp"
                  android:layout_marginBottom="5dp"
                  android:layout_marginLeft="5dp"
                  android:layout_marginRight="5dp">

        <!-- Include the mapview from an external mapview layout file-->
        <include android:id="@+id/header" layout="@layout/maps"/>
    </LinearLayout>

И вид карт, на которые я ссылаюсь:

<?xml version="1.0" encoding="utf-8"?>
<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="my legit key here"
        />

Если в своем задании я настроил вид содержимого с помощью R.layout.main, то это не удастся, но если я установлю его только на сущность карт, R.layout.maps, тогда все будет отлично.

Я хочу использовать R.layout.main, чтобы можно было обработать вид, чтобы у меня были заголовки, нижние колонтитулы, меню кнопок и т. Д. Так почему это не работает?

1 Ответ

3 голосов
/ 04 февраля 2012
<include android:id="@+id/header"..>

Переопределяет идентификатор корневого представления во включенном макете, если он был установлен.В этом случае идентификатор MapView заменяется новым.

http://developer.android.com/guide/topics/resources/layout-resource.html#include-element

...