我有一个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中的改进回调开始一个新的活动。
有什么想法吗?谢谢!
答案 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
}
});
}
}