【个人向】Android回调接口的实现方法
来源:互联网 发布:ws小世界网络模型特点 编辑:程序博客网 时间:2024/04/25 22:13
今天稍微整理下Android中关于回调接口的实现方法,相信初学的朋友们还是有人不了太了解具体的实现方法,今天就一起重温一遍吧。
假设有以下情景:
现在的需求是单击activity中的Button能够改变textview的值,怎么做?
其实我们只需要把activity中的Button的单击事件暴露给Fragment,那样我们就可以在Fragment中响应Activity里Button的单击事件。
以下是Activity中的代码:
public class MainActivity extends Activity { private static ButtonClick buttonClick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.btn); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (null != buttonClick){ buttonClick.click(); } } }); } public static void setButtonClickListener(ButtonClick buttonClickListener){ buttonClick = buttonClickListener; } interface ButtonClick{ void click(); }}首先在Activity中创建一个interface ButtonClick ,里面有一个click()方法,然后在声明一个接口的全局对象,
private static ButtonClick buttonClick;之后需要对外提供一个注册接口的函数
public static void setButtonClickListener(ButtonClick buttonClickListener){ buttonClick = buttonClickListener; }外部调用了这个方法就必须实现ButtonClick接口,并把对象传入该方法,通过该方法对buttonClick对象进行赋值。
然后就是关键的一步了,在Button的单击事件中,调用该对象的click()方法,这样就完成了!不过需要对buttonClick进行判断,即有人调用了注册方法实现了接口的情况下才可以调用该方法。
之后我们就开始使用它吧,实现回调有两种方法,第一种是Fragment本身实现ButtonClick接口,并调用注册函数注册即可:
第二种:public class MyFragment extends Fragment implements MainActivity.ButtonClick{ /** * 省略了一些代码,大家自行脑补 */ TextView textView; @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); //注册回调函数,并传入对象 MainActivity.setButtonClickListener(this); } @Override public void click() { //textView控件获取代码未给出 textView.setText("我是内容"); }}
public class MyFragment extends Fragment{ /** * 省略了一些代码,大家自行脑补 */ TextView textView; @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); MainActivity.setButtonClickListener(new MainActivity.ButtonClick() { @Override public void click() { //textView控件获取代码未给出 textView.setText("我是内容"); } }); }}
那如果你要想从通过回调接口传值只要在接口中定义一个带参函数就可以了,比如还是这个场景,不过在单击Button的时候把Fragment中的Textview文本改成Button上的文字,就只要这么做
public class MainActivity extends ActionBarActivity { private static ButtonClick buttonClick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.btn); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (null != buttonClick){ //和刚才不同的地方就是调用的时候把button上的值给传进了方法里。 buttonClick.click(button.getText().toString()); } } }); } public static void setButtonClickListener(ButtonClick buttonClickListener){ buttonClick = buttonClickListener; } interface ButtonClick{ //写个带参的函数 void click(String str); }}这样就搞定了!在Fragment中回调的方法就会多个参数,只要引用这个参数就可以了
public class MyFragment extends Fragment{ /** * 省略了一些代码,大家自行脑补 */ TextView textView; @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); MainActivity.setButtonClickListener(new MainActivity.ButtonClick() { @Override public void click(String str) { //textView控件获取代码未给出 textView.setText(str); } }); }}那么关于回调接口的实现方法就总结到这,由于我也只是菜鸟,所以我说的有什么不足的地方,请指出来,大家一起进步 (~ ̄▽ ̄)~
0 0
- 【个人向】Android回调接口的实现方法
- Fragment向activity传值的接口回调方法
- Android 接口回调个人见解
- 消除实现继承和面向接口方法
- 接口实现类方法的回调
- Android中Parcelable接口的实现方法
- android 接口回调的简单实现
- 接口回调的原理:接口变量 调用 被类实现的接口的方法
- 接口回调的原理:接口变量 调用 被类实现的接口的方法
- 接口回调的原理:接口变量 调用 被类实现的接口的方法
- Android开发一些实用的类、方法及接口(新手向)
- 实现Android语音识别服务接口 RecognitionService的方法
- Android 开发中遇到的问题-----个人向
- Android中添加监听回调接口的方法
- java中接口实现回调方法
- curl -H向api接口传递BDUSS/cookie的方法
- 实现接口的第二方法
- 向CCmdTarget的派生类添加一个接口的实现
- 期望最大化(EM)算法与高斯混合模型(GMM)证明
- 小议iOS------block传值 回调传值
- 网络图片浏览器、handle机制、网页代码查看器
- IOS之atomicnonatomic,assign,copy與retain的定義和區別
- 以太网 IP TCP UDP数据包分析
- 【个人向】Android回调接口的实现方法
- OC基础知识 -- 基本行为方法
- 相对布局 Masonry 基本使用
- 1036 跟奥巴马一起编程
- chrome加载本地文件
- 1037 在霍格沃茨找零钱
- iOS常遇到的錯誤訊息與解決方式
- poj3278Catch That Cow(AC)
- Linux PS 命令详解