java模拟C# Action作为方法参数传递

1.定义Action的接口

public class pubInterface {
    public static interface action<T>{
        void invoke(T o);
    }
}

 

2.调用的地方使用方式

  pubdialog.ShowAskMsg(this,"你是我的提示信息",new pubInterface.action<String>(){
                    @Override
                    public void invoke(String msg){
                        Toast.makeText(com.example.administrator.antest.MainActivity.this, msg, Toast.LENGTH_SHORT).show();
                    }
                });

 

3.使用的地方

/**
 *  对话框公用实现方法
 */
public class pubdialog{

    public  static void ShowAskMsg(Context context,String Msg, pubInterface.action<String> _callBack){
        dialog_msg_activity dialog=new dialog_msg_activity(context,Msg, _callBack);
        dialog.show();
    }
}    

//对话框窗体
public class dialog_msg_activity extends Dialog{
    private Context context;

    private String Msg=""; //提示信息

    pubInterface.action<String> callBack;

    public dialog_msg_activity(Context context,String _Msg, pubInterface.action<String> _callBack) {
        super(context, R.style.dialog_custom);
        this.context = context;
        this.Msg=_Msg;//提示信息
        callBack=_callBack;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Window window = getWindow();
        window.setGravity(Gravity.CENTER); // 此处可以设置dialog显示的位置为居中
        window.setWindowAnimations(R.style.bottom_menu_animation); // 添加动画效果
        setContentView(R.layout.dialog_msg);
        WindowManager windowManager = ((Activity) context).getWindowManager();// 宽度全屏
        Display display = windowManager.getDefaultDisplay();
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.width = display.getWidth()*4/5; // 设置dialog宽度为屏幕的4/5
        getWindow().setAttributes(lp);
        //setCanceledOnTouchOutside(true); // 点击Dialog外部消失
        ((TextView)findViewById(R.id.dialog_text)).setText(this.Msg);

        //dialog等控件里不能再xml里直接调用单击事件
        SetClickEvent(((TextView)findViewById(R.id.dialog_sure)));//注册单击事件
        SetClickEvent(((TextView)findViewById(R.id.dialog_cancel)));//注册单击事件
    }

    public void SetClickEvent(View view) {
        view.setOnClickListener(new View.OnClickListener(){
            @Override
            //重写onClick函数
            public void onClick(View v){
                dismiss();//让dialog关闭
                if(callBack!=null)
                {
                    if(v.getId()==R.id.dialog_sure) {
                        callBack.invoke("Y");
                    }
                    else
                    {
                        callBack.invoke("N");
                    }
                }
            }
        });
    }
}

参考:https://www.cnblogs.com/piaolingzxh/p/4118967.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值