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

在上面的代码中,我将 line 声明为“final”,它显示错误为

最终的局部变量行可能已经被赋值

在线

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 回答