2011-06-04 61 views
0

由於某種原因,這個非常簡單的程序在到達getController()方法時崩潰。它幾乎就像調試者試圖告訴我的東西,但它的一切都是亂七八糟的。相信與否,沒有一個明確的解釋或例外,哈哈。但它絕對會在這條線上炸開。如果我將其從代碼中取出,應用程序將運行一個基本地圖。我已經嘗試過所有可以想象的事情,但我無法弄清楚問題所在。有人有想法嗎?提前致謝。當它到達myMapView.getController()時,應用程序崩潰

公共類主要擴展MapActivity {

MapView myMapView; 
MapController mc; 
GeoPoint point; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    double lon = -79.9; 
    double lat = 40.4; 

    myMapView = (MapView) findViewById(R.layout.main); 

    point = new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6)); 

    mc = myMapView.getController(); 
    mc.animateTo(point); 
    mc.setZoom(13); 

} 
@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 

而且main.xml中代碼:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <com.google.android.maps.MapView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:enabled="true" 
     android:clickable="true" 
     android:apiKey="0SN6PntBTxgMIeekPQm2Of1gnlDiHmrTm8GG2xQ" 
     ></com.google.android.maps.MapView>  
     </LinearLayout> 

最後,manifest.xml的代碼:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.simplyDesign.BarCraw" android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="4" /> 
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 

     <activity android:name=".Main" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <uses-library android:name="com.google.android.maps" /> 
    </application> 
</manifest> 

回答

0

你應該給你的馬pView一個android:id並將其提供給findViewById()。在您的代碼中,您使用整個佈局的Id搜索視圖。這隻能返回null ...並在null上調用getController()時給你一個NullPointerException。

+0

你釘它。我爲什麼要讓自己穿過這個?謝謝凱文。 – atomSmasher 2011-06-04 07:03:07

0

在XML

<com.google.android.maps.MapView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:enabled="true" 
     android:clickable="true" 
     android:apiKey="0SN6PntBTxgMIeekPQm2Of1gnlDiHmrTm8GG2xQ" 
     android:id="@+id/mapView" 
     ></com.google.android.maps.MapView> 

和改變這一行定義ID爲MapView的..

myMapView = (MapView) findViewById(R.layout.mapView); 
相關問題