public void WeatherInfo(){
.......
String weatherLocation = weatherLoc[1].toString();
........
}
基本上我有一个名为WeatherInfo的虚拟动态字符串。
但是我需要从另一个空格中获取weatherLocation字符串,比如
public void WeatherChecker(){
YahooWeatherUtils yahooWeatherUtils = YahooWeatherUtils.getInstance();
yahooWeatherUtils.queryYahooWeather(getApplicationContext(), weatherLocation, this);
}
因此,我需要能够从此虚空中访问weatherLocation。
我该怎么做?
答案 0 :(得分:4)
这是scope的问题。您已声明了一个局部变量,因此只能访问本地。如果您希望访问方法之外的变量,请传递引用或将其声明为全局。
public void method1()
{
String str = "Hello";
// str is only accessible inside method1
}
String str2 = "hello there";
// str2 is accessible anywhere in the class.
修改强>
如前所述,您应该查看Java naming Conventions。
答案 1 :(得分:2)
您可以执行以下任何操作
1)将字符串作为参数传递并设置值
或
2)使用成员变量并使用getter获取变量
答案 2 :(得分:1)
您需要将其作为参数传递或创建“全局变量”
IE你可以做以下任何一种......
public void methodOne(String string){
System.out.println(string);
}
public void methodTwo(){
String string = "This string will be printed by methodOne";
methodOne(string);
}
OR(更好的解决方案)
在类声明...
下创建一个全局变量public class ThisIsAClass {
String string; //accessible globally
....
//way down the class
public void methodOne(){
System.out.println(string);
}
public void methodTwo(){
String string = "This string will be printed by methodOne"; //edit the string here
methodOne();
}
如果您有任何疑问,请与我们联系。当然,您必须相应地更改String string;
,但它与任何变量都是相同的概念。
您说过您的“句子”是在其中一种方法中创建的,并且在全局声明时尚未创建。您需要做的就是全局创建String weatherLocation = null;
,然后在需要时设置它。我认为这是你的例子,它将在weatherInfo()
public void WeatherInfo(){
weatherLocation = weatherLoc[1].toString();
}
我们只是编辑我们全局创建的那个,而不是创建一个新的。
-Henry
答案 3 :(得分:0)
我不是100%确定你想要完成什么,或者什么函数调用其他函数......但是你可以将weatherLocation
作为参数传递。这是你在找什么?
public void WeatherChecker(String weatherLocation){
YahooWeatherUtils yahooWeatherUtils = YahooWeatherUtils.getInstance();
yahooWeatherUtils.queryYahooWeather(getApplicationContext(), weatherLocation, this);
}
答案 4 :(得分:0)
你不能直接这样做,因为方法中的局部变量只存在于它们的声明到块的末尾(最迟是方法的结尾)。
如果需要在多个方法中访问变量,可以将其设为类变量(或字段)。为字段分配值后,它将保存为对象的状态,以后可以随时访问和修改。这当然意味着你必须先设置它。
答案 5 :(得分:0)
也许尝试在您尝试使用它的方法范围内将您的String声明更高。您必须确保首先调用WeatherInfo()(可能在构造函数中),以便初始化它或者您会得到奇怪的结果。
public Class {
String weatherLocation = null;
public void WeatherInfo(){
........
weatherLocation = weatherLoc[1].toString();
........
}
public void WeatherChecker(){
YahooWeatherUtils yahooWeatherUtils = YahooWeatherUtils.getInstance();
yahooWeatherUtils.queryYahooWeather(getApplicationContext(), weatherLocation, this);
}
}