您的位置:首页 > 移动开发 > Android开发

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

2016-02-25 19:43 441 查看
基本的回调是如何实现的:

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() {

}
});
}
});

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: