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的生命週期吧。。。。。。。。。。。。。
原文:https://blog.csdn.net/id19870510/article/details/46446357