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 
 

猜你喜欢

转载自blog.csdn.net/weixin_40350174/article/details/83142681