Android IllegalStateException: Fragment not attached to Activity

在Fragment 中startActivity的时候
startActivity

经常会报错

06-10 19:58:21.804: E/AndroidRuntime(21730): java.lang.IllegalStateException: Fragment HomeFragment{41b8dc48} not attached to Activity
06-10 19:58:21.804: E/AndroidRuntime(21730): 	at android.support.v4.app.Fragment.startActivity(Fragment.java:894)

具体使用场景

@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		 
		AppHttp.postXXX();  // http发送了一个请求
	}
在http的回调方法中大概执行如下(此方法定义在Fragment中)
public boolean handleMessage(final Message msg) {
		 
<span style="white-space:pre">	</span>Intent i = new Intent(getActivity(), MainActivity.class);
<pre name="code" class="java"><span style="white-space:pre">	</span>startActivity(i);
}

 
 
当请求速度很快,Fragment 还没onActivityCreate


现在直说一下解决方案

方案一:

getActivity().startActivity(i)
getActivity()获取到的是Fragment的宿主 FragmentActivity

##################################################

方案二:别再onCreate的时候发送该请求。

在onActivityCreate完成以后发送http请求。当http请求回调的时候startActivity就不会报以上错了


——————————————————————————————————————————————————————————————

贴一下Fragment的生命周期吧。。。。。。。。。。。。。


Android IllegalStateException: Fragment not attached to Activity_第1张图片               Android IllegalStateException: Fragment not attached to Activity_第2张图片

你可能感兴趣的:(Android IllegalStateException: Fragment not attached to Activity)