在进行API调用时,我很少收到这个错误。
java.lang.IllegalStateException: Fragment not attached to Activity
我尝试将代码放在isAdded()
方法中,以检查当前是否已将片段添加到其活动中,但我仍然很少收到此错误。我不能理解为什么我仍然得到这个错误。我怎样才能防止它呢?
它在行上显示错误-
cameraInfo.setId(getResources().getString(R.string.camera_id));
下面是我正在进行的示例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();
}
}
});
发布于 2015-02-23 19:50:51
片段的生命周期非常复杂,充满了错误,请尝试添加:
Activity activity = getActivity();
if (isAdded() && activity != null) {
...
}
发布于 2016-05-02 16:24:00
我发现了非常简单的解决方案isAdded()方法,这是片段方法之一,以确定该当前片段是否连接到其活性。
我们可以像在fragment类中的任何地方一样使用它,比如:
if(isAdded())
{
// using this method, we can do whatever we want which will prevent **java.lang.IllegalStateException: Fragment not attached to Activity** exception.
}
发布于 2016-12-02 13:29:49
我可能会迟到,但可能会帮助某人……最好的解决方案是创建一个全局应用程序类实例,并在未附加活动的特定片段中调用它
如下所示
icon = MyApplication.getInstance().getString(R.string.weather_thunder);
下面是应用程序类
public class MyApplication extends Application {
private static MyApplication mInstance;
private RequestQueue mRequestQueue;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
public static synchronized MyApplication getInstance() {
return mInstance;
}
}
https://stackoverflow.com/questions/28672883
复制相似问题