以接口作为方法A的参数,从而可以自定义参数接口中的方法B,大家后续自由发挥

步骤一:自定义一个工具类

//自定义一个工具类
public class DialogShowUtil{
    //类中定义一个接口
    public interface ClickListener {
        void method();
    }
    
    public static AlertDialog alertDialog;
    
    //这个就是封装的方法,其参数为接口  ClickListener c
    public static void dialogShowHandle(Context context, String title, String content, String agree
    , String disagree, ClickListener c) {//将接口ClickListener c作为该方法参数
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.activity_show_hint, null);
        TextView tvTitle = (TextView) v.findViewById(R.id.car_title);
        tvTitle.setText(title);
        TextView tvContent = (TextView) v.findViewById(R.id.car_content);
        tvContent.setText(content);
        Button btn_agree = (Button) v.findViewById(R.id.car_agree_btn);
        btn_agree.setText(agree);
        Button btn_disagree = (Button) v.findViewById(R.id.car_disagree_btn);
        btn_disagree.setText(disagree);
        //builer.setView(v);//这里如果使用builer.setView(v),自定义布局只会覆盖title和button之间的那部分
        final Dialog dialog = builder.create();
        dialog.show();
        dialog.getWindow().setContentView(v);//自定义布局应该在这里添加,要在dialog.show()的后面
        //dialog.getWindow().setGravity(Gravity.CENTER);//可以设置显示的位置
        btn_agree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                c.method();//执行接口的方法
            }
        });

        btn_disagree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                dialog.dismiss();
            }
        });
    }
}

步骤二:调用该工具类的封装方法

//调用该方法
DialogShowUtil.dialogShowHandle(mContext, null, mContext.getString(R.string.car_unlock_hint),
         mContext.getString(R.string.car_ok), mContext.getString(R.string.car_cancel), new DialogShowUtil.ClickListener() {

                 //这里就是妙处   可以自定义随意更改方法操作逻辑
                 @Override
                 public void method() {
                      Log.e(CAR_CTRL_TAG,"执行了");
                      //执行  方法C

                      
                      //执行  方法D
                 }
        });

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值