您的位置:首页 > 其它

回调的简单实现

2018-03-08 11:34 344 查看
首先,新建一个接口CallBackA

public interface CallBackA {

void showA(String str);

}


第一种方法,通过构造方法传入interface

新建ClassA,编写参数为CallBackA的构造方法

public ClassA(CallBackA callBackA) {
this.callBackA = callBackA;
}


在ClassA中需要回调的地方调用callBackA.showA方法

public void netWork(){
callBackA.showA("A");
}


ClassA的全部代码

public class ClassA {
private CallBackA callBackA;

public ClassA(CallBackA callBackA) {
this.callBackA = callBackA;
}

public void netWork(){
callBackA.showA("A");
}

}


接收回调内容的类MainActivity

先得到ClassA的对象,顺便将CallBackA传到ClassA中。传参的方式有两张,一种是将CallBackA直接new出来,

ClassA classA = new ClassA(new CallBackA() {
@Override
public void showA(String str) {
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
}
});
classA.netWork();


另一种是让MainActivity实现CallBackA,将this传入。

public class MainActivity extends AppCompatActivity implements CallBackA{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ClassA classA = new ClassA(this);
classA.netWork();

}

@Override
public void showA(String str) {
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
}
}


第二种方法是在需要回调的对象里编写一个公共的方法,当然参数还是CallBackA

public void setCallBack(CallBackA callBackA) {
this.callBackA = callBackA;
}


拿到对象后,调用setCallBack方法将CallBackA传进去。和上面一样,传的方法有两种。

公共方法这个传入方法,我一般用在Service中,因为Service不能new出来,只能通过bindService得到Service对象后调用里面的方法将CallBackA传入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: