接口回调机制在Android数据传输中应用非常的普遍,那么我们要如何去创建自己的接口回调呢?以下为写过的代码
例如我在A类中想要把数据传递到B类
先在A类中定义一个待实现的接口,并暴露操作方法
public OnChooseListener mOnChooseListener;
//这是暴露的方法
public void setOnChooseListener(OnChooseListener mOnChooseListener) {
this.mOnChooseListener = mOnChooseListener;
}
//这是待实现的接口
public interface OnChooseListener {
public void choose(String oritation, int selectedIndex);
}
在B类(即欲接受数据的地方实现该接口)
private ChooseHouseOritationPopupWindow.OnChooseListener mHouseOritationListener = new ChooseHouseOritationPopupWindow.OnChooseListener() {
@Override
public void choose(String oritation, int selectedIndex) {
mTvOrentation.setText(oritation);
}
};
再在A类的数据来源处使用该方法
//此处是个"提交"的Button
view.findViewById(R.id.popupwindows_choosehouseoritation_btnconfirm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnChooseListener != null) {
mOnChooseListener.choose(mWvContext.getSelectedText(), mWvContext.getSelected() + 1);
}
//点击后改popupwindows会自动消失
ChooseHouseOritationPopupWindow.this.dismiss();
}
});
注意在B类必须使用暴露的方法
ChooseHouseOritationPopupWindow chooseOritationPopupWindow = new ChooseHouseOritationPopupWindow(getActivity(), getView(), oritationDatas);
chooseOritationPopupWindow.setOnChooseListener(mHouseOritationListener);