2011-05-20 158 views
1

我的Android應用程序出現問題。如果我在onCreate()中放置一個方法,整個應用程序將崩潰。無法在onCreate中調用方法()

下面是代碼

private LocationManager locationManager = null; 

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

    Button button1 = (Button)findViewById(R.id.button1); 
    button1.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      Intent i3 = new Intent(); 
      i3.setClass(mainMenu.this, police.class); 
      i3.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      mainMenu.this.startActivityForResult(i3,0); 
     } 
    }); 

    locationManager = (LocationManager)mainMenu.this.getSystemService(Context.LOCATION_SERVICE); 

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000 , 0 , new MyLocationUpdater()); 

    Location location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER); 

    updateWithNewLocation(location); 
} 

的updateWIthNewLocation(地點位置)方法是外的onCreate(); 我無法在onCreate()內成功調用它。

任何想法?

+0

你能提供錯誤的日誌嗎? – darune 2011-05-20 12:27:28

+2

'updateWithNewLocation()'定義在哪裏?您不會在代碼中的任何地方顯示它。另外,您在LogCat中收到的錯誤是什麼? – kcoppock 2011-05-20 12:28:10

+0

我的意思是updateWithNewLocation()在onCreate()方法之外。它在那裏被定義。我只是想知道爲什麼它不能在onCreate()方法中調用。謝謝! – 4af2e9eb6 2011-05-20 12:40:11

回答

0

首先,您需要學習使用adb logcat,DDMS或Eclipse中的DDMS透視圖來檢查LogCat並查看與您的錯誤相關的堆棧跟蹤。

我的猜測是你正在碰撞NullPointerException,因爲location可能是null。撥打requestLocationUpdates()後,您可能需要幾分鐘時間才能獲得地點。如果確實是您遇到的情況,請修改您的應用程序以刪除getLastKnownLocation()呼叫並將您的updateWithNewLocation()呼叫轉移到MyLocationUpdater中的onLocationChange()方法。

+0

非常感謝!日誌中的消息是NullPointerException!其實這是我的問題的一部分,你是否願意幫助我解決整個問題?鏈接在這裏。 http://stackoverflow.com/questions/6068614/get-gps-location-instantly-via-android-app – 4af2e9eb6 2011-05-20 12:47:22

+0

@KittenTom:你已經有三個答案在這個問題上。至少兩個似乎是正確的。 – CommonsWare 2011-05-20 12:58:54

相關問題