public Locator(Context mContext){
getLocation();
this.mContext = mContext;
}
public void setLatitude ( String lat ){
this.latitude = lat;
}
public String getLatitude ( ){
return latitude;
}
public void setLongitude ( String lon ){
this.longitude = lon;
}
public String getLongitude ( ){
return longitude;
}
public void getLocation ( ){
LocationManager lm = (LocationManager)mContext.getSystemService ( Context.LOCATION_SERVICE );
Location location = lm.getLastKnownLocation ( LocationManager.GPS_PROVIDER );
longitude = String.valueOf(location.getLongitude());
latitude = String.valueOf(location.getLatitude());
}
public static String getURL(){
return "api.openweathermap.org/data/2.5/weather?lat=" + latitude + "&lon=" + longitude + "APPID=" + APPID;
}
纬度和经度变量都给我带来静态上下文错误,也给我带来了调用函数的错误。 我尝试使它们成为静态变量,但没有运气。有什么想法吗?
在代码的另一部分中,但是无论我做什么,都会在某处收到静态上下文错误:
final String url = getApiUrlFromAreaId(areaId);
static String getApiUrlFromAreaId ( String areaId ){
return URL + areaId;
}
没有,我的编程没有达到标准。请忍受我
答案 0 :(得分:1)
您有
public static String getURL()
这意味着可以在不使用类实例的情况下调用此方法。因此,该方法中使用的所有内容也必须是静态的(如果未作为参数传递)。
我只能假设纬度,经度或appId不是静态的。
也可以将它们设置为静态,或者从static
中删除getUrl
限定词。
答案 1 :(得分:0)
假设func parseCSVFile(filePath string) []LabelWithFeatures {
fileContent, _ := ioutil.ReadFile(filePath)
lines := bytes.Split(fileContent, newline)
numRows := len(lines)
labelsWithFeatures := make([]LabelWithFeatures, numRows-2)
for i, line := range lines {
// skip headers
if i == 0 || i == numRows-1 {
continue
}
labelsWithFeatures[i-1] = NewLabelWithFeatures(bytes.Split(line, comma))
}
return labelsWithFeatures
}
和latitude
变量的声明如下所示:
longitude
,并且您打算像这样从另一个类调用它:
public class Locator{
private String latitude; //Notice this var is not static.
private String longitude; //Notice this var is not static.
}
然后,您必须将Locator loc = new Locator(someContext);
String url = loc.getURL();
方法声明为非静态方法,这意味着可以在变量上调用该方法,并且必须在内部使用getURL
和latitude
变量来构成URL是所述实例的URL。所以这样声明:
longitude
现在,如果您的意图是这样称呼:
public String getURL(){
return "api.openweathermap.org/data/2.5/weather?" +
"lat=" + latitude + //This instance's latitude
"&lon=" + longitude + //This instance's longitude
"APPID=" + APPID;
}
然后请注意,Locator loc = new Locator(someContext);
String url = Locator.getURL(loc);
是该类的静态方法,而否是该类实例的方法。如果这是您的目标,请像这样声明getURL
:
getURL