2012-02-29 35 views
0

我發現this project的知名度爲commonsware。我試圖啓動它,但我有一個空指針異常: 以下是代碼:無法啓動網絡地圖活動(NullPointerException)

public class WebMapActivity extends Activity { 
     private static String PROVIDER="gps"; 
     private WebView browser; 
     private LocationManager myLocationManager=null; 

     @Override 
     public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     browser=(WebView)findViewById(R.id.webview); 

     myLocationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); 

     browser.getSettings().setJavaScriptEnabled(true); 
     browser.addJavascriptInterface(new Locater(), "locater"); 
     browser.loadUrl("http://gmaps-samples.googlecode.com/svn/trunk/articles-android-webmap/simple-android-map.html"); 
     } 

     @Override 
     public void onResume() { 
     super.onResume(); 
     myLocationManager.requestLocationUpdates(PROVIDER, 0, 
                0, 
                onLocation); 
     } 

     @Override 
     public void onPause() { 
     super.onPause(); 
     myLocationManager.removeUpdates(onLocation); 
     } 

     LocationListener onLocation=new LocationListener() { 
     public void onLocationChanged(Location location) { 
      StringBuilder buf=new StringBuilder("javascript:whereami("); 

      buf.append(String.valueOf(location.getLatitude())); 
      buf.append(","); 
      buf.append(String.valueOf(location.getLongitude())); 
      buf.append(")"); 

      browser.loadUrl(buf.toString()); 
     } 

     public void onProviderDisabled(String provider) { 
      // required for interface, not used 
     } 

     public void onProviderEnabled(String provider) { 
      // required for interface, not used 
     } 

     public void onStatusChanged(String provider, int status, 
             Bundle extras) { 
      // required for interface, not used 
     } 
     }; 

     public class Locater { 
     public String getLocation() throws JSONException { 
      Location loc=myLocationManager.getLastKnownLocation(PROVIDER); 

      if (loc==null) { 
      return(null); 
      } 

      JSONObject json=new JSONObject(); 

      json.put("lat", loc.getLatitude()); 
      json.put("lon", loc.getLongitude()); 

      return(json.toString()); 
     } 
     } 
    } 

的logcat:

02-29 22:10:35.096: E/AndroidRuntime(885): FATAL EXCEPTION: main 
02-29 22:10:35.096: E/AndroidRuntime(885): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gatec.tunisiana/com.android.airplane.WebMapActivity}: java.lang.NullPointerException 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.os.Looper.loop(Looper.java:130) 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-29 22:10:35.096: E/AndroidRuntime(885): at java.lang.reflect.Method.invokeNative(Native Method) 
02-29 22:10:35.096: E/AndroidRuntime(885): at java.lang.reflect.Method.invoke(Method.java:507) 
02-29 22:10:35.096: E/AndroidRuntime(885): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-29 22:10:35.096: E/AndroidRuntime(885): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-29 22:10:35.096: E/AndroidRuntime(885): at dalvik.system.NativeStart.main(Native Method) 
02-29 22:10:35.096: E/AndroidRuntime(885): Caused by: java.lang.NullPointerException 
02-29 22:10:35.096: E/AndroidRuntime(885): at com.android.airplane.WebMapActivity.onCreate(WebMapActivity.java:26) 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-29 22:10:35.096: E/AndroidRuntime(885): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
02-29 22:10:35.096: E/AndroidRuntime(885): ... 11 more 

我不知道爲什麼它不能launchs活動。非常感謝您的幫助。

+2

您的main.xml中有一個名爲webview的WebView嗎? – ByteMe 2012-02-29 22:21:21

+0

@ByteMe:OOOOOO no no no!我做了什麼太可怕了!我怎麼沒注意到?非常感謝你。真是個錯誤! Pfff – androniennn 2012-02-29 22:21:48

+0

@ByteMe:你可以回覆帖子,我會接受它以備將來之用;)。謝謝 :)。 – androniennn 2012-02-29 22:24:18

回答

1

很高興你的答案。爲了將來的參考,看看你的日誌。我知道你張貼了他們,但真正的答案就像中途。

02-29 22:10:35.096: E/AndroidRuntime(885): Caused by: java.lang.NullPointerException 
02-29 22:10:35.096: E/AndroidRuntime(885): at com.android.airplane.WebMapActivity.onCreate(WebMapActivity.java:26) 

在第二行,它說.WebMapActivity.onCreate(WebMapActivity.java:26)所以你知道它在26行的GO在在OnCreate()的WebMapActivity到該行並找出哪些是null值,該行的關鍵。

像ByteMe說......在該行

browser=(WebView)findViewById(R.id.webview); 

Nothing可能引起一個NullPointerException,除非沒有被發現的WebView。

+0

謝謝:)。現在的問題是我不知道如何將地圖定位到預定義點以及如何添加疊加層。我之前從未使用Map API V3 ... – androniennn 2012-02-29 22:36:00

+0

我其實並沒有花時間使用Map API。我不確定,但我想你可能需要創建另一個問題才能得到這個答案,因爲沒有人會在NullPointerQuestion中徘徊,希望回答Map API問題:/。我會環顧四周,如果我找到任何東西,我會盡力指出你朝着正確的方向。但我甚至不完全確定你在問什麼。你的意思是什麼?您可以使用佈局來居中佈局項目。 – Rawr 2012-02-29 22:41:00

+0

我的意思是,當啓動地圖時,它會集中在某個點上。感謝您的幫助。 – androniennn 2012-02-29 23:22:27

相關問題