當我嘗試LocationProvider locationProvider = LocationManager.GPS_PROVIDER;
的IntelliJ是給我的錯誤:incompatible types: required: android.location.LocationProvider found: java.lang.String.
問題與IntelliJ IDEA的 - 不兼容的類型
是怎麼回事?
當我嘗試LocationProvider locationProvider = LocationManager.GPS_PROVIDER;
的IntelliJ是給我的錯誤:incompatible types: required: android.location.LocationProvider found: java.lang.String.
問題與IntelliJ IDEA的 - 不兼容的類型
是怎麼回事?
我有一個IDEA項目,並沒有這個問題。您是否檢查過您正在導入所有適當的軟件包?
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.GpsStatus;
當你右擊/到/宣言的LocationManager你應該看到下面的代碼:
package android.location;
public class LocationManager {
public static final java.lang.String NETWORK_PROVIDER = "network";
public static final java.lang.String GPS_PROVIDER = "gps";
更新
確定。我知道這裏發生了什麼。你正在做的是將一個LocationManager.GPS_PROVIDER(實際上是一個字符串)分配給一個LocationProvider對象。因此不兼容的類型錯誤。
是否有你想實例化LocationProvider對象的原因?看看LocationManager API,你並不需要其中的一個。 API採用常量字符串(GPS_PROVIDER,NETWORK_PROVIDER等)並在內部實例化相應的LocationProvider。如果您確實需要LocationProvider實例,則可以使用getProvider方法從LocationManager中取回它。
另一個更新
所以它看起來像OP中遇到的第一個地方這個問題的原因是,在Obtaining User Location documentation示例代碼是錯誤的:
LocationProvider locationProvider = LocationManager.NETWORK_PROVIDER;
// Or use LocationManager.GPS_PROVIDER
Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
LocationProvider是一個抽象超類,你不應該直接實例化這些東西。相反,您將LocationManager.type_of_provider_here傳遞給LocationManager並實例化一個實現該抽象類的對象。因此,樣品應該是:
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
我有'一切進口android.location *;' – LuxuryMode 2011-05-20 01:59:49
@LuxuryMode OK。顯然不是這樣。我正在擺弄我的項目,看看我能否重現問題,然後倒退。我會讓你知道我怎麼走。 – RedBlueThing 2011-05-20 02:03:03
@LuxuryMode當你在LocationManager上聲明時會發生什麼? (見我的更新)。 – RedBlueThing 2011-05-20 02:11:08