Ошибка получения в окончательном модификаторе

В моем приложении для 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();
    }
  });
}

В приведенном выше коде я объявил строку как "final", она показывает ошибку как

Последняя строка локальной переменной, возможно, уже была назначена

на линии

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

Итак, я удалил окончательный модификатор. Теперь он показывает ошибку как

Невозможно сослаться на строку неконечной переменной внутри внутреннего класса, определенного в другом методе.

на линии

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

Я объявил локальную переменную String внутри цикла 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();
        }
    });
 }

Это также показывает ошибку. Я не мог этого понять. Может кто-нибудь сказать, как избежать этой ошибки в моем коде.

Заранее спасибо.

1 ответ

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 ();
            }
        }
    );
}
Другие вопросы по тегам