相关疑难解决方法(0)

java.lang.IllegalStateException:未附加到Activity的片段

在进行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

140
推荐指数
6
解决办法
13万
查看次数

在Volley Android库中的网络请求之后更新UI线程

我决定尝试一下Volley,所以目前我有很多REST标注要做,所以我通常会创建一个RequestHandler和一个ResponseHandler类,它们的名字分别建议处理请求和响应.我遵循这种模式,所以我不写冗余代码.我只是将动态查询/ url作为参数传递,并使用switch case处理对每个请求的响应.但我坚持以下问题:

我无法从我调用RequestHandler类的地方更新我的UI线程.到目前为止我尝试或已经知道的事情:

  1. 使UI元素(Textview,Listview)保持静态,并在响应到来后更新它们.
  2. 传入上下文参数并在收到响应后更新UI.
  3. 将请求和响应写为Activity中的内部类
  4. 摆脱排球.

我在想,你们是怎么做到的?有没有比我遵循的请求/响应处理程序模式更好的模式?有没有更新UI线程遵循相同模式的方法?

提前致谢 !

rest android android-volley

11
推荐指数
1
解决办法
5355
查看次数