您的位置:首页 > 编程语言 > Java开发

解决java.lang.IllegalStateException: Fragment not attached to Activity

2016-05-23 16:58 633 查看
转载至:http://stackoverflow.com/questions/28672883/java-lang-illegalstateexception-fragment-not-attached-to-activity

This error happens due to the combined effect of two factors:

The HTTP request, when complete, invokes either onResponse() or onError() (which work on the main thread) without knowing whether the Activity is still in the foreground or not. If the Activity is gone (the user navigated elsewhere), getActivity() returns null.

The Volley Response is expressed as an anonymous inner class, which implicitly holds a strong reference to the outer Activity class. This results in a classic memory leak.

To solve this problem, you should always do:

Activity activity = getActivity();
if(activity != null){

// etc ...

}


and also, use isAdded() in the onError() method as well:

@Override
public void onError(VolleyError error) {

Activity activity = getActivity();
if(activity != null && isAdded())
mProgressDialog.setVisibility(View.GONE);
if (error instanceof NoConnectionError) {
String errormsg = getResources().getString(R.string.no_internet_error_msg);
Toast.makeText(activity, errormsg, Toast.LENGTH_LONG).show();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: