我使用以下代码更新TextView
:
if(free != "") {
runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView) findViewById(R.id.TextView_TripStartStatus)).append(free + " are not free");
}
});
}
它给我一个错误,说它需要被声明为final
。我可以创建一个接受final
自由变量的函数并使用它。但是这里有什么我可以用的吗?
在内部类之外创建一个临时的final
变量:
if(free!="") { // this is the wrong way to compare strings
final String tempFree = free;
runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView) findViewById(R.id.TextView_TripStartStatus)).append(tempFree + " are not free");
}
});
}
由于您不想要一个单独的方法,
-
您可以使用shmolle建议的溶液
-
如果可能,可以在封闭类级别声明变量
free
。
但是它可能会在活动结束的情况下抛出NullPointerException。首先检查当前活动是否仍在工作。
private void appendText(final String free) {
if(this.isFinishing()||free.equals(""))
return;
runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView) findViewById(R.id.textView)).append(free + " are not free");
}
});
}
或如果您不想使用method,则使用
if(this.isFinishing()||free.equals(""))
return;
final String temp=free;
runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView) findViewById(R.id.textView)).append(temp + " are not free");
}
});