初次用到回調是在Fragment和Activity之間進行通信的時候,當時感覺很難理解,但又覺得這個方法使用起來很方便,所以對它進行仔細的研究。發現回調不僅僅是實現功能那麼簡單,它還可以把幾個相似的功能用簡單的幾句代碼來實現。所以在編程中使用回調可增加碼農們的效率。
我自己總結出了回調的大致四個步驟:
1.在需要調用的文件裡寫一個接口和一個接口方法。注意,這裡的權限都是公共的。
2.在被調用的文件裡實現這個接口和這個接口的方法。在這個方法裡寫我們的需求,也就是所需要的功能。
3.在需要調用的文件裡寫和靜態方法和一個接口類型的靜態變量,在方法裡使被調用的文件轉化為此接口類型的變量。
4.在被調用的文件裡調用第3步的靜態方法,使兩文件關聯起來。
5.調用接口方法(靜態變量.接口方法)。
簡而言之:回調就是使用實現接口的接口方法來操作本類文件。
下面這是一個簡單的示例:
我們需要在A畫面實現文本框文字的改變,所以我們可以在另一個B畫面裡創建接口,操作A畫面的文本文字。
A畫面:
- publicclassCallBack_AActivityextendsAppCompatActivity
- implementsCallBack_BActivity.callBack{
- privateTextViewtv;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_call_back__a);
-
- CallBack_BActivity.setCallBack(this);
-
- tv=(TextView)findViewById(R.id.tv);
- tv.setClickable(true);
- tv.setOnClickListener(newView.OnClickListener(){
- @Override
- publicvoidonClick(Viewview){
- Intentintent=newIntent(getBaseContext(),CallBack_BActivity.class);
- startActivity(intent);
- }
- });
- }
-
- @Override
- publicvoidchangeText(Stringresult){
- tv.setText(result);
- }
-
- }
B畫面:
- publicclassCallBack_BActivityextendsAppCompatActivity{
- privatestaticcallBackback;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_call_back__b);
- }
- publicvoidclick(Viewview){
- back.changeText("這是一個回調");
- finish();
- }
- publicinterfacecallBack{
- publicvoidchangeText(Stringresult);
- }
- publicstaticvoidsetCallBack(Contextcontext){
- back=(callBack)context;
- }
- }
- /*
- *1.在本界面定義接口
- *2.在另一個界面實現此接口
- *3.本界面實現方法
- *4.另一個界面關聯。
- **/
截圖:
1.第一次進入A畫面:
2.點擊文本框進入B畫面
3.點擊按鈕返回A畫面