-2

私のAndroidアプリケーションでは、ここにいくつかのコードがあります。

final String line;
while ((line = rd.readLine()) != null) {
 // Print the response output...
 offer.this.runOnUiThread(new Runnable() {
 public void run() {
    Toast.makeText(getBaseContext(), ""+line.toString(), Toast.LENGTH_LONG).show();
    //Toast.makeText(getBaseContext(),"data inserted",Toast.LENGTH_SHORT).show();
    }
  });
}

上記のコードでは、行を「最終」として宣言しましたが、次のようにエラーが表示されます

最後のローカル変数行は既に割り当てられている可能性があります

ラインで

while ((line = rd.readLine()) != null)

そこで、final 修飾子を削除しました。今ではエラーが表示されます

別のメソッドで定義された内部クラス内の非最終変数行は参照できません

ラインで

Toast.makeText(getBaseContext(), ""+line.toString(), Toast.LENGTH_LONG).show();

while ループ内でローカル文字列変数を宣言し、それに行の値を割り当てました。コードは

while ((line = rd.readLine()) != null) {
    final String e=line.toString();
    offer.this.runOnUiThread(new Runnable() {
    public void run() {
        Toast.makeText(getBaseContext(), ""+e.toString(), Toast.LENGTH_LONG).show();
        }
    });
 }

エラーも表示されます。私はこれを理解できませんでした。私のコードでこのエラーを回避する方法を教えてください。

前もって感謝します。

4

1 に答える 1

4
String line;
while ((line = rd.readLine ()) != null) {
    final String l = line;
    offer.this.runOnUiThread (
        new Runnable () {
            public void run () {
                Toast.makeText (getBaseContext(), l, Toast.LENGTH_LONG).show ();
            }
        }
    );
}
于 2013-03-01T12:48:08.200 に答える