0
私はウィンドウマネージャーに追加するビューを持っています。それはすでにstackoverflowの上の別の質問のように、ウィンドウマネージャに追加されている場合は追加する前に私がチェックします。ビューはすでにウィンドウマネージャーに追加されています
protected void addViewToWindow(@NonNull OverlayLayout view) {
if (view.getWindowToken() == null) {
handler.post(() -> windowManager.addView(view, view.getViewParams()));
}
}
しかし、アンドロイド5といくつかのデバイス上でこの例外があります:
View has already been added to the window manager.
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:243)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
どのようにすることができます私はこれを解決する?助けてください
システムが後でウィンドウマネージャにアタッチしようとしたビューで 'addViewToWindow'を呼び出すようです。あなたはあなたの質問を編集して、どこでメソッドを呼び出すことができますか? – Haem
注: - なぜあなたは既に@NonNullという表記でチェックしている場合に、再びnullをチェックするのですか? – sushildlh
@HeikkiMäenpääこのビューが既に添付されているかどうかを確認するだけです – shmakova