Android 接口回调(有史以来最实用最简单的例子)

xiaoxiao2021-02-28  87

官方解释: 接口回调是指:把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。

 

我的例子: 我在微信上跟女朋友求婚了。可是等半天她没来微信。于是我下楼去取快递去了,然后取完刚进门,发现她回微信说答应求婚了。我欣喜若狂。

 

  ** 看完例子感觉不耐烦的请看下面代码,并直接复制走吧。

 

-----------------------------  WaitMessage.class 和 SendMessage.class   --------------------------------------

 

 1.首先在SendMessage.class 里定义一个接口:

public interface Propose{ void answer(String info); }

2.用该接口名定义一个变量储存数据,并定义一个公共方法:

Propose propose; public void response(Propose propose){ this.propose = propose; }

3.要把发送的信息写进接口中的方法里(变量必须做非空判断):

if(null!=propose){ propose.answer("好吧,我嫁给你!"); }

4.WaitMessage.class 里实现上面SendMessage.class的接口Propose :

 

​ public class WaitMessage extends AppCompatActivity implements SendMessage.Propose { @Override public void answer(String info) { } }

5.WaitMessage.class 中的生命周期onCreate()里实例化SendMessage.class 这个类,并且调用公共方法response :

SendMessage sendMessage = new SendMessage(); sendMessage.response(this);

 

------------------------- SendMessage.class 完整代码 ------------------------------------------

/** * 男朋友跟我求婚了,我考虑一会儿再回复他 */ public class SendMessage { Propose propose; public interface Propose { void answer(String info); } public void response(Propose propose) { this.propose = propose; } public SendMessage() { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(8000); if (null != propose) { propose.answer("好吧,我嫁给你!"); } } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } }

 

//--------------------- WaitMessage.class 完整代码 -------------------------------------

/** * 我跟女朋友求婚了,然后在等待回复,好心急 */ public class WaitMessage extends AppCompatActivity implements SendMessage.Propose { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println("嫁给我吧!"); SendMessage sendMessage = new SendMessage(); sendMessage.response(this); } /** * 打印的是我收到信息后的想法 */ @Override public void answer(String info) { switch (info){ case "滚!": System.out.println("我想上吊!"); break; case "着啥急?!": System.out.println("我其实不着急,爸妈在着急!"); break; case "好吧,我嫁给你!": System.out.println("太开心了,哈哈!"); break; } } }

 

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

最新回复(0)