1. 程式人生 > >Android IllegalStateException: Fragment not attached to Activity

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