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

onResponse回调方法改型android中的空上下文,android,android-activity,callback,retrofit,Android,Android Activity,Callback,Retrofit,我有一段对话。当我点击OK按钮时,我对我的api执行一个改造调用,如下所示 @Override public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) { int code = response.code(); if (code == 200) {

我有一段对话。当我点击OK按钮时,我对我的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();
                }

            }
@覆盖
公共void onResponse(调用、响应){
int code=response.code();
如果(代码==200){
LoginResponse lr=response.body();
if(lr.getError()){
showtoos(getActivity(),“Error!Los datos son incorrectos.”);
}否则{
startActivity(新意图(getActivity(),ConfigGeneralActivity.class));
}
}否则{
Toast.makeText(getActivity(),“Error:+String.valueOf(code),Toast.LENGTH\u LONG.show();
}
}
在代码的这一部分,getActivity()为null

另一个选项是将上下文从oncreatedialog传递到此回调,但当我这样做时,我得到一个错误,即活动未附加到片段

我知道我可以实现Otto,但它对于我想要做的事情来说太复杂了。我只想从DialogFragment中的改装回调开始一个新的活动


有什么想法吗?谢谢

您需要运行NuithRead以获取OnResponse回调中的上下文

比如:


我认为您调用此方法的片段已销毁,因此,当方法响应时,该片段不会附加到活动。如果getActivity()为空,请尝试使用应用程序上下文null@Jai但是要调用applicationContext,我必须调用getActivity().getApplicationContext()和getActivity()is null..@MaximilianoPoggio:不,我的意思是您必须创建一个应用程序类,该类将为您提供全局上下文,而不是与已分发的活动相关的上下文。该答案无法解决问题,您正在使用getActivity()调用runOnUiThread(),getActivity可以为null
@Override
public void onResponse(Call call, Response response) throws IOException {
    if (response.isSuccessful()) {    
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //your code
            }
        });
    }
}