在进行API调用时,我很少收到此错误.
java.lang.IllegalStateException: Fragment not attached to Activity
Run Code Online (Sandbox Code Playgroud)
我尝试将代码放在isAdded()方法中以检查片段当前是否已添加到其活动中但仍然很少出现此错误.我不明白为什么我仍然会收到此错误.我怎么能阻止它?
它在线上显示错误 -
cameraInfo.setId(getResources().getString(R.string.camera_id));
Run Code Online (Sandbox Code Playgroud)
下面是我正在制作的示例api调用.
SAPI.getInfo(getActivity(),
new APIResponseListener() {
@Override
public void onResponse(Object response) {
cameraInfo = new SInfo();
if(isAdded()) {
cameraInfo.setId(getResources().getString(R.string.camera_id));
cameraInfo.setName(getResources().getString(R.string.camera_name));
cameraInfo.setColor(getResources().getString(R.string.camera_color));
cameraInfo.setEnabled(true);
}
}
@Override
public void onError(VolleyError error) {
mProgressDialog.setVisibility(View.GONE);
if (error instanceof NoConnectionError) {
String errormsg = getResources().getString(R.string.no_internet_error_msg);
Toast.makeText(getActivity(), errormsg, Toast.LENGTH_LONG).show();
}
}
});
Run Code Online (Sandbox Code Playgroud) android illegalstateexception android-fragments android-activity android-volley
我决定尝试一下Volley,所以目前我有很多REST标注要做,所以我通常会创建一个RequestHandler和一个ResponseHandler类,它们的名字分别建议处理请求和响应.我遵循这种模式,所以我不写冗余代码.我只是将动态查询/ url作为参数传递,并使用switch case处理对每个请求的响应.但我坚持以下问题:
我无法从我调用RequestHandler类的地方更新我的UI线程.到目前为止我尝试或已经知道的事情:
我在想,你们是怎么做到的?有没有比我遵循的请求/响应处理程序模式更好的模式?有没有更新UI线程遵循相同模式的方法?
提前致谢 !