android回调是怎么实现的? --以自定义Dialog为例

基本的回调是如何实现的:

1、首先创建一个接口,这个接口用于你在某个情景下执行相应的操作方法。

2、创建一个功能类,比如这个类可以显示一个对话框、可以滑动菜 单、可以下载数据等等。

3、在这个类里面声明回调接口的对象

4、在这个类里面创建在某个情景下需要执行的方法,而且在这个方法里面为声明的接口对象赋 值。

5、在其他的类中使用这个功能类。


以自定义的Dialog为例,在构造这个自定义Dialog时,实现点击Dialog的按钮调用回调方法

1、创建 OnBtnClickListemer 接口
/**
 * Created by 张武 on 2016/2/24.
 */
public interface OnBtnClickListemer {
    public void OnOKBtnClick();
    public void OnCancleBtnClick();
}

2、创建功能类,在功能类中声明接口对象,在功能类中的某个操作中调用接口对象的方法
/**
 * Created by 张武 on 2016/2/24.
 */
public class MyDialog extends Dialog {
    
    private Button okBtn;

    private Button cancleBtn;
    
    //接口对象
    private OnBtnClickListemer mOnOKBtnClickListemer;
    
    //构造函数
    public MyDialog(Context context, final OnBtnClickListemer onBtnClickListemer) {
        super(context);

        Window window = this.getWindow();
        window.setContentView(R.layout.my_dailog_layout);

        okBtn=(Button)window.findViewById(R.id.ok_btn);
        cancleBtn=(Button)window.findViewById(R.id.cancle_btn);

        okBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBtnClickListemer.OnOKBtnClick();//接口对象的方法,需要在实例化MyDialog是实现该回调方法
            }
        });
        cancleBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
                onBtnClickListemer.OnCancleBtnClick();
            }
        });
        this.show();
    }
}
 
 
3、在activity中构造自定义的Dialog
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ((Button)findViewById(R.id.tanchuang_btn)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final MyDialog mMyDialog=new MyDialog(MainActivity.this, new OnBtnClickListemer() {
                    @Override
                    public void OnOKBtnClick() {
                        Toast.makeText(MainActivity.this,"我很开心",Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void OnCancleBtnClick() {

                    }
                });
            }
        });

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值