【问题标题】:java.lang.IllegalStateException: getResources() has already been calledjava.lang.IllegalStateException: getResources() 已经被调用
【发布时间】:2016-12-11 12:34:45
【问题描述】:

我希望我的应用能够手动处理方向更改。 所以我实现了onConfigurationChanged(Configuration newConfig),如下:

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        applyOverrideConfiguration(newConfig);
        super.onConfigurationChanged(newConfig);
    }

但是,当我的应用程序运行时,我只是转动我的设备,然后,我的应用程序崩溃了,我得到了这些日志:

12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich 致命例外:主 12-11 13:18:47.522 22290 22290 E
AndroidRuntime fr.zwedge.becomerich 流程: fr.zwedge.becomerich, PID: 22290 12-11 13:18:47.522 22290 22290 E
AndroidRuntime fr.zwedge.becomerich
java.lang.IllegalStateException: getResources() 已经 称为 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich 在 android.view.ContextThemeWrapper.applyOverrideConfiguration(ContextThemeWrapper.java:64) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich 在 fr.zwedge.becomerich.activity.MainActivity.onConfigurationChanged(MainActivity.java:1116) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich 在 android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:4037) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich 在 android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:4113) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1435) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich 在 android.os.Handler.dispatchMessage(Handler.java:110) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich
在 android.os.Looper.loop(Looper.java:193) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich at android.app.ActivityThread.main(ActivityThread.java:5299) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich
在 java.lang.reflect.Method.invokeNative(Native Method) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich
在 java.lang.reflect.Method.invoke(Method.java:515) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 12-11 13:18:47.522 22290 22290 E AndroidRuntime fr.zwedge.becomerich
在 dalvik.system.NativeStart.main(Native Method)

不知道怎么回事。希望有人能给我解释一下,帮助我,Darkball60

【问题讨论】:

    标签: android screen-orientation illegalstateexception android-configchanges


    【解决方案1】:

    ContextThemeWrapper.applyOverrideConfiguration 方法只能被调用一次,它会检查资源是否被访问过。如果您在构造函数中也调用了 applyOverrideConfiguration,请检查您的代码,这发生在我身上一次。

    同时检查documentation

    【讨论】:

    • 查了这个,不,我之前没用过这个方法。
    猜你喜欢
    • 2016-04-16
    • 2011-11-11
    • 2023-03-08
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2012-12-14
    • 2017-10-13
    相关资源
    最近更新 更多