内部クラス/リスナーの外にオブジェクトを取得する:(私の主な活動は、この関数を呼び出す私は最終的にインターフェイス/リスナーとAsyncTask(DogAsyncTask)(DogListener)のうちのオブジェクトを取得するために管理
public String fout(String url) {
Dog d_in = new Dog("DogName");
DogAsyncTask task = new DogAsyncTask(d_in);
final String out = ""; <---Have tried but error for out becomes "The final local variable out cannot be assigned, since it is defined in an enclosing type"
task.setDogListener(new DogListener()
{
@SuppressWarnings("unchecked")
@Override
public void DogSuccessfully(String data) { <---The string I want to get
Log.e("DogListened", data);
out = data;
}
@Override
public void DogFailed() {}
});
task.execute(url);
return out;
}
FOUT )、それからストリングを取得するはずです。文字列データはすでに存在し、Log.e( "DogListened"、data);それも記録する。それを私の主な活動にどのように戻すことができますか?私はデータを設定しようとしましたが、外側には最終的なStringを作成しましたが、「囲むタイプで定義されているため、最終的なローカル変数outを割り当てることはできません」というエラーが表示されます。どうすればこの問題を回避できますか?私はそれがリスナーの範囲外であるので、あなたがout
にアクセスすることができないと思います
おかげ
「アウト」を「最終」と宣言する必要があるのはなぜですか? –
それはちょうど試みたものでした。他の人が内部クラスからそれを得るためのファイナンスとして宣言しているからです。 –
最後に、あなたが最終的なキーワードなしでそれを宣言し、あなたの活動の範囲で宣言することをお勧めします。それから、その値にアクセスして値を変更することができます。 –