我想在无效运行中获得颜色值,我该怎么做?举个例子? 那里的颜色是空的。
public void onResponse(Call call, final Response response) throws IOException {
String color = response.body().string();
Profile.this.runOnUiThread(new Runnable() {
@Override
public void run() {
setTheme(color); //color is null here.
}
}
}
运行中的颜色为null() 完整代码:
protected void onCreate(Bundle savedInstanceState) {
this.context = getApplicationContext();
OkHttpClient client = new OkHttpClient();
okhttp3.Request request = new okhttp3.Request.Builder()
.url("http://ip/color.php")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
String color = response.body().string();
Profile.this.runOnUiThread(new Runnable() {
@Override
public void run() {
setTheme(color);
}
}
}
});...
答案 0 :(得分:1)
如果它表示从内部类中访问变量颜色, 将变量颜色设为全局。 在onCreate之外声明它。
或者让它成为最终
final String color = response.body().string();
答案 1 :(得分:1)
首先,您的代码不应该编译,因为您无法访问" closure"中的非最终变量。 因此,您需要的唯一变化是
final String color = response.body().string();
Profile.this.runOnUiThread(new Runnable() {
@Override
public void run() {
setTheme(color);
}
}