问题描述
在使用ViewFlipper时,爆出一下Bug.
Caused by: java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@424fe0d8
at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:658)
at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1601)
at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:489)
at android.widget.ViewFlipper.onDetachedFromWindow(ViewFlipper.java:106)
at android.view.View.dispatchDetachedFromWindow(View.java:12857)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2732)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2730)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2730)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2730)
at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:4287)
at android.view.ViewGroup.removeAllViews(ViewGroup.java:4219)
at com.gjcx.zsgj.module.other.fragment.TextAdFragment.onPause(TextAdFragment.java:67)
解决方案:
http://daniel-codes.blogspot.com/2010/05/viewflipper-receiver-not-registered.html
http://stackoverflow.com/questions/8050730/viewflipper-receiver-not-registered
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ViewFlipper;
public class GabrielleViewFlipper extends ViewFlipper {
public GabrielleViewFlipper(Context context) {
super(context);
}
public GabrielleViewFlipper(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDetachedFromWindow() {
try {
super.onDetachedFromWindow();
}
catch (IllegalArgumentException e) {
stopFlipping();
}
}
}
and in your layout dont use the normal ViewFlipper, use GabrielleViewFlipper: