-7
        public void WeatherInfo(){
    .......
    String weatherLocation = weatherLoc[1].toString();
........
}

基本的に、WeatherInfo と呼ばれる空域にあるこの動的文字列があります。

しかし、このように別のボイドから weatherLocation 文字列を取得する必要があります

    public void WeatherChecker(){

    YahooWeatherUtils yahooWeatherUtils = YahooWeatherUtils.getInstance();
  yahooWeatherUtils.queryYahooWeather(getApplicationContext(), weatherLocation, this);
}

したがって、この void から weatherLocation にアクセスできる必要があります。

どうすればいいですか?

4

6 に答える 6

4

これは範囲の問題です。ローカル変数を宣言したため、ローカルでしかアクセスできません。メソッドの外部で変数にアクセスする場合は、参照を渡すか、グローバルに宣言します。

public void method1()
{
   String str = "Hello";
   // str is only accessible inside method1 
}


String str2 = "hello there"; 
// str2 is accessible anywhere in the class.

編集

指摘したように、Java 命名規則を確認する必要があります。

于 2013-07-08T16:05:39.043 に答える
2

次のいずれかを実行できます

1) 文字列をパラメータとして渡し、値を設定します

また

2) メンバー変数を使用し、getter を使用して変数を取得する

于 2013-07-08T16:05:14.260 に答える
2

パラメータとして渡すか、「グローバル変数」を作成する必要があります

IEでは、次のいずれかを行うことができます...

public void methodOne(String string){
    System.out.println(string);
}
public void methodTwo(){
    String string = "This string will be printed by methodOne";
    methodOne(string);
}

または (より良い解決策)

クラス宣言の下にグローバル変数を作成します...

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();
}

新しいものを作成する代わりに、グローバルに作成したものを編集するだけです。

-ヘンリー

于 2013-07-08T16:07:03.493 に答える
0

メソッド内のローカル変数は、宣言からブロックの最後 (遅くともメソッドの最後) までしか存在しないため、これを直接行うことはできません。

複数のメソッドで変数にアクセスする必要がある場合は、それをクラス変数 (またはフィールド) にすることができます。フィールドに値を割り当てると、オブジェクトの状態として保存され、後でいつでもアクセスして変更できます。これはもちろん、最初に設定する必要があることを意味します。

于 2013-07-08T16:05:54.880 に答える