onResponse回调方法中的空上下文改进了android

时间:2016-09-27 03:00:51

标签: android android-activity callback retrofit

我有一个DialogFragment。当我单击确定按钮时,我会像我这样执行对我的api的改装调用

 @Override
            public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
                int code = response.code();
                if (code == 200) {
                    LoginResponse lr = response.body();
                    if (lr.getError()) {
                        Utils.showToast(getActivity(), "Error! Los datos son incorrectos.");
                    } else {
                        startActivity(new Intent(getActivity(), ConfigGeneralActivity.class));
                    }
                } else {
                    Toast.makeText(getActivity(), "Error: " + String.valueOf(code), Toast.LENGTH_LONG).show();
                }

            }

在代码的这一部分,getActivity()为null。

另一种选择是将上下文从oncreatedialog传递给此回调,但是当我这样做时,我得到的错误是活动没有附加到片段。

我知道我可以实施Otto但是它太复杂了我想做的事情。我只是想从DialogFragment中的改进回调开始一个新的活动。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

你需要runOnUiThread来获取OnResponse Callback中的Context

像:

@Override
public void onResponse(Call call, Response response) throws IOException {
    if (response.isSuccessful()) {    
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //your code
            }
        });
    }
}