您的位置:首页 > 其它

Fragment XXXXXX{xxxxxxxxx} not attached to Activity

2017-12-15 16:14 627 查看
Monkey跑出如下异常。导致Settings Crash

E AndroidRuntime:  at android.app.Fragment.getResources(Fragment.java:814)
E AndroidRuntime:  at android.app.Fragment.getText(Fragment.java:826)
E AndroidRuntime:  at com.android.settings.wifi.WifiSettings.setOffMessage(WifiSettings.java:767)
E AndroidRuntime:  at com.android.settings.wifi.WifiSettings.onWifiStateChanged(WifiSettings.java:825)
E AndroidRuntime:  at com.android.settingslib.wifi.WifiTracker$MainHandler.handleMessage(WifiTracker.java:581)


这个异常是这里抛出来的:

frameworks/base/core/java/android/app/Fragment.java
809    /**
810     * Return <code>getActivity().getResources()</code>.
811     */
812    final public Resources getResources() {
813        if (mHost == null) {
814            throw new IllegalStateException("Fragment " + this + " not attached to Activity");
815        }
816        return mHost.getContext().getResources();
817    }
818


那么就说明mHost为null。mHost为什么是Null呢,什么情况下不是Null呢?

432    // Activity this fragment is attached to.
433    FragmentHostCallback mHost;


这里的说明意思是Fragment需要Attach的Activity,如果mHost为空,那么就是Fragment还没attach到Activity呗。

避免如下问题可以通过先判断mHost是否,当然系统已经给你写好了,你直接调用就ok了。

894    /**
895     * Return true if the fragment is currently added to its activity.
896     */
897    final public boolean isAdded() {
898        return mHost != null && mAdded;
899    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  异常 not-attach