2012-02-04 1 views
0

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

Это мой 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, чтобы я мог скрыть вид, чтобы иметь свои верхние и нижние колонтитулы, меню кнопок и т. Д., Так почему же это не работает?

+0

Если вы '' что-то * другое * чем 'MapView', это работает? – CommonsWare

+0

Использование 'android: id'' в теге include переопределяет идентификатор корневого элемента из включенного файла макета. Вы можете просто удалить его, если вы не используете '' id/header''. – harism

+0

Пример в Android-разработчике раздувает представление - что-то попробовать? – AJcodez

ответ