RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(URL).build();
api api = restAdapter.create(api.class);
api.get(value, new Callback<model>(){
@Override
public void success(model model, Response response) {
//get value of a here.
a=model.getA();
}
@Override
public void failure(RetrofitError error) {
error.printStackTrace();
}
});
Toast.makeText(getApplicationContext(),a, Toast.LENGTH_SHORT).show();
我希望获得外部改装功能的价值。但它无效 我已经尝试过final,但它需要先赋值(无法从getA()获取值) 或者最后我们得到A()(但它仍然不能在外面使用,因为它是一个局部变量。)
答案 0 :(得分:0)
您的问题不是从Retrofit
获取价值。当您执行get
函数时,您试图立即显示Toast
,但您的请求是异步的,您应该等到服务器获得响应。您应该将代码更改为以下内容:
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(URL).build();
api api = restAdapter.create(api.class);
api.get(value, new Callback<model>(){
@Override
public void success(model model, Response response) {
//get value of a here.
a=model.getA();
Toast.makeText(getApplicationContext(),a, Toast.LENGTH_SHORT).show();
}
@Override
public void failure(RetrofitError error) {
error.printStackTrace();
}
});
或者您可以使用同步请求,但就主线程而言,请避免使用同步请求,因为它会导致应用冻结并显示ANR错误。