android接口回调的两中简单写法

    xiaoxiao2021-04-19  101

    android接口回调的两中简单写法——B509小贴士

    一、第一种内部重写(较简单,常用异步) (1)创建接口 ,并实现方法 (2)在获取数据类中实现传递接口对象为参数的方法 (3)在主类中调用返回数据方法 并传递接口对象,并重写方法

    1.首先创建一个 CallBack接口用来传递内容 如下

    里面实现两个方法Success和Fail用来返回数据 public class MyInterface { public interface CallBack{ void Success(String success); void Fail(String fail); } }

    2.其次写好获取数据的类BackData(可以叫做传递桥梁)

    这里面定义这个TransportContext方法用来接收参数也就是callBack对象 public class BackData { /** * 效果就是第一次点击返回成功第二次返回失败 */ private static boolean isInternet;//模拟网络情况 public static void TransportContext(MyInterface.CallBack callBack) { if (!isInternet) { callBack.Success("成功"); isInternet = true; } else { callBack.Fail("失败"); } } }

    3.在主类中调用 传递方法(搭桥)定义一个CallBackActivity

    调用TransportContext这个方法。传递callBack对象并重写里面的方法 public class CallBackActivity extends AppCompatActivity{ private TextView tv_callBack_click; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_call_back); tv_callBack_click = (TextView) findViewById(R.id.tv_callBack_click); } //按钮点击事件 public void onClick_callback(View view) { BackData.TransportContext(new MyInterface.CallBack() { //重写接口方法 获取数据 @Override public void Success(String success) { tv_callBack_click.setText(success); } @Override public void Fail(String fail) { tv_callBack_click.setText(fail); } }); } }

    4.布局太简单了就不贴出来了 贴一张效果图

    二、第二种 外部重写方法 (其实本质相同) 步骤 1.创建接口并且实现里面的方法 2.想把消息返回哪(主类)在哪实现接口 并重写方法 3.在主类中将上下文传递到另一个类中(实际也是接口对象) 4.用传递过来的接口对象调用接口里的方法 5.再回调中获取消息

    1.接口跟上边一样 2.获取数据方法也是一样 3.主类

    public class CallBackActivity extends AppCompatActivity implements MyInterface.CallBack { private TextView tv_callBack_click; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_call_back); tv_callBack_click = (TextView) findViewById(R.id.tv_callBack_click); } //按钮点击事件 public void onClick_callback(View view) { //传递上下文 BackData.TransportContext(this); } //外部重写方法 @Override public void Success(String success) { tv_callBack_click.setText(success); } @Override public void Fail(String fail) { tv_callBack_click.setText(fail); } }

    4.效果图一样,,就不贴了 希望有用

    转载请注明原文地址: https://ju.6miu.com/read-676012.html

    最新回复(0)