2013-08-16 61 views
1

我正在編寫使用我的GPS位置的Android應用程序。我的代碼非常簡單。適用於Android的設計模式 - 確保設置GPS位置

public class MyActivityThing extends Activity { 

Location     l; 
MyLocationListener   locationListener; 
LocationManager    locationManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    locationListener = new MyLocationListener(); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener); 


} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.car, menu); 
    return true; 
} 

public void setHotColdLocation(View view) 
{ 
    l = locationListener.getCurrentLocation(); 
} 
} 

這裏是我的MyLocationListener

public class MyLocationListener implements LocationListener { 

private static Location thelocation; 
@Override 
public void onLocationChanged(Location location) { 

    thelocation = location; 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 

} 

@Override 
public void onProviderEnabled(String provider) { 

} 

@Override 
public void onProviderDisabled(String provider) { 

} 

public Location getCurrentLocation() 
{ 
    return thelocation; 
} 
} 

我的情況是這樣的。我有一個按鈕onClickMyActivityThing中調用setHotColdLocation方法。

我的問題是,我應該如何確保用戶按下按鈕時的位置? onLocationChanged方法不會立即調用,所以當應用程序第一次啓動時,我可以按下按鈕,並導致異常....

我應該讓該按鈕不可見,直到該位置被調用? 我是否應該將setHotColdLocation的內容放在try catch中並丟棄用戶點擊直到設置位置? 我可以想出很多方法來使其工作,但我不知道最好的一個......或者是正確的。

任何幫助?

+0

爲什麼不只是在一個空檢查? = – nedaRM

回答

1

另一種說法是,你的按鈕可以開始一個任務,最終設置的位置。

+0

謝謝,這是有道理的。我是Android新手。我想我會使用一個AsyncTask。 – Rell3oT