0

hello mapチュートリアルに基づいて単純なMapsアプリを作成しようとしていますが、でMapView取得したものfindViewByIdはnullを返します。ただし、マップはエミュレーターで正しく表示されます。そのため、アプリは機能しますが、コードでマップビューを取得できません。私は何が欠けていますか?

コード:

public class HelloMapActivity extends MapActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MapView mapView = (MapView) findViewById(R.id.mapview);
        if (mapView == null) {
            Log.d("onCreate", "map is null"); //log shows that mapView is null
        }
        setContentView(R.layout.main);
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

レイアウト:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainlayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <com.google.android.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:apiKey="the key"
    />

</RelativeLayout>
4

2 に答える 2

5

setContentView(R.layout.main)の前に追加する必要がありますMapView

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MapView mapView = (MapView) findViewById(R.id.mapview);
        if (mapView == null) {
            Log.d("onCreate", "map is null"); //log shows that mapView is null
        }
    }


setContentViewを呼び出した直後に必ず 追加することをお勧めしますsuper.onCreate(savedInstanceState)

于 2012-06-21T17:54:39.067 に答える
4

setContentView(R.layout.main);来るべきbefore MapView mapView = (MapView) findViewById(R.id.mapview);

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

         setContentView(R.layout.main); //<----------------------------------------

        MapView mapView = (MapView) findViewById(R.id.mapview);
        if (mapView == null) {
            Log.d("onCreate", "map is null"); //log shows that mapView is null
        }

    }
于 2012-06-21T17:54:17.360 に答える