Ошибка получения в окончательном модификаторе
В моем приложении для 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 ();
}
}
);
}