package cn.bidaround.youtui_template; import java.util.ArrayList; import android.annotation.SuppressLint; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.widget.AdapterView.OnItemClickListener; import android.widget.PopupWindow; import cn.bidaround.point.YtPoint; import cn.bidaround.ytcore.data.ShareData; /** * 友推基础分享框,其他的分享popupwindow继承于此类 * @author youtui * @since 14/5/4 */ public abstract class YTBasePopupWindow extends PopupWindow implements OnItemClickListener { protected YtTemplate template; protected ShareData shareData; protected ArrayList<String> enList; // 总共有多少页 protected int pagerSize; // 每一页的容量 protected int pagerVolume; /** 主分享界面实例 */ protected static YTBasePopupWindow instance; public static YTBasePopupWindow getInstance() { return instance; } /** 主分享界面样式 */ /**获取积分信息*/ public static final int GET_POINT = 0; /**分享后获得积分成功*/ public static final int SHARED_HAS_POINT = 1; /**分享后获取积分失败*/ public static final int SHARE_POINT_FAIL = 2; /**传入的activity*/ protected Activity act; /**是否有积分活动*/ protected boolean hasAct; /**监听分享完后的回调,刷新积分显示和告诉用户获得积分*/ private static final String BROADCAST_REFRESHPOINT = "cn.bidaround.point.BROADCAST_REFRESHPOINT"; public YTBasePopupWindow(Context context, boolean hasAct, YtTemplate template, ShareData shareData, ArrayList<String> enList) { super(context); act = (Activity) context; this.hasAct = hasAct; initData(); if(hasAct){ IntentFilter filter = new IntentFilter(BROADCAST_REFRESHPOINT); context.registerReceiver(pointReceiver, filter); } this.shareData = shareData; this.template = template; this.enList = enList; } /** * 刷新积分,将网络图片下载到本地SD卡 */ @SuppressLint("HandlerLeak") protected void initData() { // 没有活动则将 if (hasAct) { new Thread() { @Override public void run() { YtPoint.refresh(act); } }.start(); } else YtPoint.pointMap.clear(); } /** * 刷新积分,在子类实现 * * @param arr */ public abstract void refresh(); /** 释放instance */ @Override public void dismiss() { instance = null; try { act.unregisterReceiver(pointReceiver); } catch (Exception e) { } super.dismiss(); } BroadcastReceiver pointReceiver = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { refresh(); } }; }