最近在新项目的开发中,经常使用要使用到Android的AlertDialog弹框,所以做了一个简单的封装。

    /**提示框     *     * @param tipText 要提示的文本     * @param mContext 视图上下文     */    public static void showTipDialog(String tipText,Context mContext, DialogInterface.OnClickListener confirm, DialogInterface.OnClickListener cancel){        if (mContext == null){            System.out.println("showTipDialog:  mContext is null");            return ;        }        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);        builder.setTitle("提示");        TextView mMsg = new TextView(mContext);        mMsg.setText(tipText);        mMsg.setGravity(Gravity.CENTER_HORIZONTAL);        mMsg.setTextSize(18);        builder.setView(mMsg);        builder.setCancelable(false);        if (confirm != null){            builder.setPositiveButton("确定", confirm);        }        if (cancel != null){            builder.setNegativeButton("取消", cancel);        }        Dialog tipDialog = builder.create();        tipDialog.setCanceledOnTouchOutside(false);        tipDialog.show();    }

封装一个调用弹框得方法虽然简单,但是在使用中也遇到了一些问题,比较严重的就是在非Activity中使用时传入的上下文对象会导致应用异常退出,原因就是Dialog找不到一个视图页面可以依附,为了解决这个问题下面的工具类也就应运而生。

    /**     * 通过application获取栈顶的activity实例     * @param application     * @return     */    public static Activity getTopActivity(Application application) {        Activity activity = null;        try {            Class clz = application.getClass().forName("android.app.ActivityThread");            Method meth = clz.getMethod("currentActivityThread");            Object currentActivityThread = meth.invoke(null);            Field f = clz.getDeclaredField("mActivities");            f.setAccessible(true);            ArrayMap obj = (ArrayMap) f.get(currentActivityThread);            for (Object key : obj.keySet()) {                Object activityRecord = obj.get(key);                Field actField = activityRecord.getClass().getDeclaredField("activity");                actField.setAccessible(true);                activity = (Activity) actField.get(activityRecord);            }        } catch (Exception e) {            e.printStackTrace();        }        return activity;    }

这两个方法配合着使用就可以在任何地方弹出提示框。

更多相关文章

  1. Android弹出式提示框 PopupWindow
  2. android实现好看的自定义提示框
  3. Android使用Toast显示提示信息
  4. 【Android】自动提示匹配之AutoCompleteTextView
  5. Android 监控应用删除,并提示处理
  6. 动态创建ImageView视图
  7. Android 仿 Iphone 自定义滚条视图(wheelview)
  8. android使用SharedPreferences保存值,值变化会提示
  9. Android动态创建ListView视图,动态增加和删除Item.

随机推荐

  1. Android(安卓)自定义shape圆形按钮
  2. Android最佳实战连接
  3. Android(安卓)相对布局属性
  4. Android单元测试
  5. Android中的主题Theme
  6. Android(安卓)界面布局之RelativeLayout
  7. android中用Spannable在TextView中设置超
  8. android中的ellipsize
  9. android:layout_gravity 和 android:grav
  10. android 4.2 (1)