实现使用接口内部类进行跨类传值
定义一个普通的Java类:
package com.example.shiyan;
public class haitao {
private static haitao instance;
hhCallBack call;
private haitao() { //构造方法私有,拒绝通过new关键字方式创建类的实例
}
public static haitao generate() { //单例模式
if (instance == null) {
instance = new haitao();
return instance;
}
return instance;
}
public void chuFa(){ //相当于C#中事件触发
if(call!=null){
call.xianshi("xuhaitao", 35);
}
}
public void bangDing(hhCallBack callBack){ //相当于C#事件的绑定
call=callBack;
}
public interface hhCallBack { //相当于C#定义一个事件
public void xianshi(String name, int age);
}
}
MainActivity代码:
package com.example.shiyan;
import com.example.shiyan.haitao.hhCallBack;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
public class MainActivity extends Activity {
haitao tt;
hhCallBack kkBack = new hhCallBack() {
@Override
public void xianshi(String name, int age) {
Log.i("xuhaitao","hunk xu");
Log.i("xuhaitao",name);
Log.i("xuhaitao",age+"");
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tt = haitao.generate();
tt.bangDing(kkBack); //绑定具体的方法
tt.chuFa();
}
}
打印结果:
FR:海涛高软(徐海涛)