我正在尝试将变量字符串发送到Runnable,但发现自己必须为此创建两个变量。一个普通字符串内容和一个最终字符串 finalcontent ,分配了另一个字符串的内容。
String content = "";
try {
content = response.body().string();
} catch (IOException e) {
// Handle exception
}
final String finalcontent = content;
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView text = (TextView)findViewById(R.id.textView);
text.setText(finalcontent);
}
});
这是执行此操作的常规方法还是有更好的方法可以避免创建两个变量?
答案 0 :(得分:1)
它是Java语言设计的限制,但您应该能够编写
unstack(df.year) # suggested convention
答案 1 :(得分:1)
您可以创建Runnable的自定义实现,这是一个示例
void foo(){
String content = "";
try {
content = response.body().string();
} catch (IOException e) {
// Handle exception
}
runOnUiThread(new MyCustomRunnable(content));
}
private class MyCustomRunnable implements Runnable {
private String content;
public MyCustomRunnable(String content) {
this.content = content;
}
@Override
public void run() {
TextView text = (TextView)findViewById(R.id.textView);
if (text != null) {
text.setText(content);
}
}
}
答案 2 :(得分:0)
为什么不使用RxJava?我想您只是想在从互联网上获取数据后更新UI。
Observable observable = Observable.create(OnSubscribe()...)
.subscribeOn(Shceduler.io).observeOn(AndroidSchedulers.mainthread)