Android之接口回调

(1)首先,在模板类(因为可能在不同activity里面使用,并且想要在不同activity中有不同的逻辑实现)中定义一个接口

public class My_call extends LinearLayout{

    //省略了addView操作
    Button left_button;
    Button right_button;
    My_click_listener my_click_listener;

//***************************************就是这个
    public static interface My_click_listener{
        public void left_click();
        public void right_click();
    }


    public void setMy_click_listener(My_click_listener my_click_listener){
        this.my_click_listener=my_click_listener;
    }

    public My_call(Context context) {
        super(context);

        //假如我这个控件有两个button
        left_button=new Button(context);
        right_button=new Button(context);


        //为了让这个类在不同地方被调用 点击事件可以自由,使用这种模板
        left_button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                my_click_listener.left_click();
            }
        });

        right_button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                my_click_listener.right_click();
            }
        });
    }


}

(2)使用模板的地方,实现接口,并传回来
这里传回实现接口的匿名类,还有一种方式就是调用模板的地方实现接口,然后通过this进行回调

public class MainActivity extends AppCompatActivity {

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

        My_call my_call=new My_call(this);
        my_call.setMy_click_listener(new My_call.My_click_listener() {
            @Override
            public void left_click() {
                //点击left_button的逻辑
            }

            @Override
            public void right_click() {
                //点击right_button的逻辑
            }
        });



    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值