查看翻转抛出异常的ViewFlipper.onDetachedFromWindow抛出、异常、onDetachedFromWindow、ViewFlipper

2023-09-07 00:03:12 作者:穿上校服谁敢说我不乖

我有一个 ViewFlipper 在我的活动被用作一个的ListView 。我已经张贴有关的问题,我看到在模拟器而回。请参阅Activity渗漏IntentReceiver android.widget.ViewFlipper 。我发现一个问题的答案呢。

I have a ViewFlipper in my Activity that is used as a footer view of a ListView. I had posted a while back regarding an issue I was seeing in the emulator. See Activity has leaked IntentReceiver android.widget.ViewFlipper. I found an answer to that yet.

现在,我的设备上进行调试时,看到的问题。本质上讲,当设备配置变化(旋转)使我的活动被破坏,我得到一个崩溃。查看日志。

Now, I'm seeing problems when debugging on a device. Essentially when device configuration change (rotation) causes my activity to be destroyed, I get a crash. See log.

01-19 14:56:19.679: E/AndroidRuntime(30240): FATAL EXCEPTION: main
01-19 14:56:19.679: E/AndroidRuntime(30240): java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@4076f0c0
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:610)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:840)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:331)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.widget.ViewFlipper.onDetachedFromWindow(ViewFlipper.java:104)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.View.dispatchDetachedFromWindow(View.java:6173)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1164)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1162)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1162)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1162)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.ViewRoot.dispatchDetachedFromWindow(ViewRoot.java:1748)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.ViewRoot.doDie(ViewRoot.java:2759)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.ViewRoot.die(ViewRoot.java:2729)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:218)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.view.Window$LocalWindowManager.removeViewImmediate(Window.java:436)
01-19 14:56:19.679: E/AndroidRuntime(30240):    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:2705)

有趣的是,如果调试器没有连接这个问题不会发生频繁。这削弱了我。

Interestingly if the debugger is not attached this problem does not occur as often. This is crippling me.

这是我所看到的 ViewFlipper :: onDetachedFromWindow 正在尝试注销未注册的接收器。这 ViewFlipper ListView控件已被删除使用 removeFooterView ViewFlipper :: onDetachedFromWindow 之称。

From what I can see ViewFlipper::onDetachedFromWindow is trying to unregister a receiver which is not registered. This ViewFlipper has been removed from the ListView using removeFooterView before ViewFlipper::onDetachedFromWindow is called.

这是我用它来从列表视图中删除viewFlipper:

This is what I use to remove the viewFlipper from the list view:

mLoadMoreFlipper.stopFlipping();
mLoadMoreFlipper.removeAllViews();
getExpandableListView().removeFooterView(mLoadMoreFlipper);
mLoadMoreFlipper = null;

是否有任何其他的方式来强制销毁视图。我试过 WindowManager.removeView 而是抛出一个异常说的看法并没有被注册窗口管理器

Is there any other way to force destroy a view. I've tried WindowManager.removeView but that throws an exception saying the view has not been registered with WindowManager.

任何帮助是AP preciated。

Any help is appreciated.

推荐答案

我有同样的问题,因为我没有多少时间前。我发现这个解决方案http://daniel-$c$cs.blogspot.com/2010/05/viewflipper-receiver-not-registered.html但我不知道如何使用它。所以,我从这里 ViewFlipper答案:接收未注册,我的问题已经解决。尝试一下!我敢肯定,这个解决方案将帮助你。

I have the same problem as I had few time ago. I found this solution http://daniel-codes.blogspot.com/2010/05/viewflipper-receiver-not-registered.html but I didn't understand how to use it. So, I get the answer from here ViewFlipper : Receiver not registered and my problem has been solved. Try it! I'm sure this solution will help you.