改造不能保持自己的方法的价值

时间:2016-05-08 09:01:59

标签: android retrofit

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()(但它仍然不能在外面使用,因为它是一个局部变量。)

1 个答案:

答案 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错误。