我使用以下代码更新TextView
:
if(free != "") {
runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView) findViewById(R.id.TextView_TripStartStatus)).append(free + " are not free");
}
});
}
它给我一个错误,说它需要声明final
。我可以创建一个接受final
自由变量的函数并使用它。但是,我可以在这里使用任何一个班轮吗?
答案 0 :(得分:2)
只需在内部类之外创建一个临时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");
}
});
}
答案 1 :(得分:0)
由于您不想要单独的方法,
您可以按照shmosle的建议使用解决方案。
如果可能,您可以在封闭的班级级别声明变量free
。
答案 2 :(得分:-1)
但是如果活动完成,它可能会抛出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");
}
});
}
或如果您不想使用方法,请使用
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");
}
});