Pro Android学习笔记(四七):Dialog(4):一些补充和思考
来源:互联网 发布:网络奇兵1游侠 编辑:程序博客网 时间:2024/05/22 07:47
编程思想:封装接口
在小例子中,fragment会调用activity的onDialogDone()来显示Toast等信息。在真正项目中,fragment的编写并不需要了解activity的各类方法,好的编程风格是将fragment所涉及的方法以接口的方式封装起来,如下:
public interface OnMyDialogClickListener {
public void onDialogDone(String tag, boolean cancelled, CharSequence message);
}
在activity中,增加接口的实现,如下:
public class MainActivity extends Activity implements OnMyDialogClickListener{
......
public void onDialogDone(String tag, boolean cancelled, CharSequence message) {
String s = tag + " responds with: " + message;
if(cancelled)
s = tag + " was cancelled by the user";
Toast.makeText(this, s, Toast.LENGTH_LONG).show();
showInfo(s);
}
}
相应地,在fragment中,对该方法的调用,可以写为:
OnMyDialogClickListener act = (OnMyDialogClickListener)getActivity();
act.onDialogDone(……);
对于一些大型项目,如果我们无法确定activity是否真的实现了接口,可以在fragment的早期,即刚关联activity的阶段进行检测,如下:
@Override
public void onAttach(Activity activity) {
//onAttach()是合适的早期阶段进行检查MyActivity是否真的实现了接口。
//采用接口的方式,dialog无需详细了解MyActivity,只需了解其所需的接口函数,这是真正项目中应采用的方式。
try{
OnMyDialogClickListener act = (OnMyDialogClickListener)activity;
}catch(ClassCastException e){
…... activity并不真正支持接口的异常处理......
}
super.onAttach(activity);
}
fragment和activity以其他fragment之间的通信
小例子演示了通过getActivity()获取接口对象或者直接获取activity的对象,实现两者之间的通信。此外fragment也可以通过fragment管理器,通过tag,获取其他fragment实例,从而进行fragment之间的通信。当然从编程思想的角度看,fragment之间的过多进行交叉调用,不利于程序的管控。
本博文涉及的例子代码,可以在Pro Android学习:Dialog小例子中下载。
相关链接: 我的Android开发相关文章
- Pro Android学习笔记(四七):Dialog(4):一些补充和思考
- Pro Android学习笔记(四四):Dialog(1):触发Dialog
- Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
- Pro Android学习笔记(四五):Dialog(2):DialogFragment
- Pro Android学习笔记(二七):用户界面和控制(15):FrameLayout
- Pro Android学习笔记(七六):服务(1):local和remote
- Pro Android学习笔记(八七):了解Handler(1):组件和线程
- Pro Android学习笔记(二四):用户界面和控制(12):Style和Theme
- Pro Android学习笔记(七九):服务(4):远程服务的实现
- Pro Android学习笔记(四三):Fragment(8):再谈Transaction和管理器
- Pro Android学习笔记(四六):Dialog(3):对话框弹对话框
- Kotlin学习笔记(四)-函数补充
- Android学习笔记(四七):Content Provider初谈和Android联系人信息
- Android学习笔记(四七):Content Provider初谈和Android联系人信息
- Pro Android学习笔记(七):了解Content Provider(下上)
- Pro Android学习笔记(七二):HTTP服务(6):HttpURLConnection
- Pro Android学习笔记(七三):HTTP服务(7):AndroidHttpClient
- Pro Android学习笔记(七五):HTTP服务(9):DownloadManager
- Ubuntu下的计划任务 -- cron的基本知识
- 进程间共享内存
- POJ 1260 Pearls (基础DP)
- EF提供的三种查询方式
- [pig] encountered errors at the first time
- Pro Android学习笔记(四七):Dialog(4):一些补充和思考
- IUnKNown接口——QueryInterface函数
- Spring mvc中log4j的配置与使用
- JNI调用
- win7计算机管理 资源管理器停止工作
- 测试SQLPLUS的ARRAYSIZE对性能的影响
- asp.net页面处理流程 - 处理 PostBack回来的数据 - LoadAllState 和 ProcessPostData
- 排序算法总结
- JMS无法消费消息原因: