package com.yuyh.library.view.common;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import java.lang.ref.WeakReference;
/**
* 弹窗之前检测Activity是否销毁
*
* @author yuyh.
* @date 16/4/11.
*/
public class SafePopupWindow extends PopupWindow {
private WeakReference<Context> mContext = null;
public SafePopupWindow(Context context) {
super(context);
mContext = new WeakReference<>(context);
}
public SafePopupWindow(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = new WeakReference<>(context);
}
public SafePopupWindow(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mContext = new WeakReference<>(context);
}
public SafePopupWindow(View contentView, int width, int height) {
super(contentView, width, height);
mContext = new WeakReference<>(contentView.getContext());
}
public SafePopupWindow(View contentView, int width, int height, boolean focusable) {
super(contentView, width, height, focusable);
mContext = new WeakReference<>(contentView.getContext());
}
@Override
public void showAtLocation(View parent, int gravity, int x, int y) {
Context c = mContext.get();
if (c instanceof Activity && ((Activity) c).isFinishing()) {
return;
}
super.showAtLocation(parent, gravity, x, y);
}
@Override
public void showAsDropDown(View anchor) {
Context c = mContext.get();
if (c instanceof Activity && ((Activity) c).isFinishing()) {
return;
}
super.showAsDropDown(anchor);
}
@Override
public void showAsDropDown(View anchor, int xoff, int yoff) {
Context c = mContext.get();
if (c instanceof Activity && ((Activity) c).isFinishing()) {
return;
}
super.showAsDropDown(anchor, xoff, yoff);
}
}