Fragment类提供了管理“选项菜单”的回调函数onCreateOptionMenu(Menu,MenuInflater),调用它可以--创建“选项菜单”。

在需要“选项菜单”时,Android-OS通过Activity的FragmentManager调用Fragment的onCreateOptionMenu(Menu,MenuInflater),创建出来。

当用户点击“选项菜单”时,Fragment会收到onOptionItemSelected(MenuItem)方法的回调请求。

//选项菜单可以包含多个菜单项,通过检查菜单项的ID,确定是哪一个,然后作出相应的动作。

那么什么是回调请求呢?????

从用户的角度看,当我点击“选项菜单”,会发生一件事(这个app是跳转到另一个activity)。

代码是在fragment中覆盖onOptionItemSelected(MenuItem){//跳转到另一个activity}。

先来看一个经典的回调函数的例子

模拟911事件-结果WTC(世贸大厦)被轰炸

1.这里是接口、调用者、执行者

  1. //相当于接口InA
  2. public interface BoomWTC{
  3. //获得拉登的决定
  4. public benLaDengDecide();
  5.  
  6. // 执行轰炸世贸
  7. public void boom();
  8. }
  9.  
  10. //相当于class A
  11. public class At$911 implements BoomWTC{//相当于【背景1】
  12. private boolean decide;
  13. private TerroristAttack ta;//相当于【背景2】
  14.  
  15. public At$911(){
  16. Date now=new Date();
  17. SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
  18. this.dicede= myFmt.format(dt).equals("01/09/11 09:44");
  19. this.ta=new TerroristAttack();
  20. }
  21.  
  22. //获得拉登的决定
  23. public boolean benLaDengDecide(){
  24. return decide;
  25. }
  26.  
  27. // 执行轰炸世贸
  28. public void boom(){
  29. ta.attack(new At$911);//class A调用class B的方法传入自己的对象,相当于【you call me】
  30. }
  31. }
  32.  
  33. //相当于class B
  34. public class TerroristAttack{
  35. public TerroristAttack(){
  36. }
  37.  
  38. public attack(BoomWTC bmw){——这相当于【背景3
  39. if(bmw.benLaDengDecide()){/*class B在方法中回调class A的方法,相当于【i call you back】*/
       
  40. }
  41. }
  42. }

2.这里是主函数

  1. public class $911{
  2. public static void main(String[] args){
  3.  
  4. At$911 $911=new At$911();
    $911.boom();
  1. } }

流程:在main()中创建911实例,调用boom()方法,该方法会调用911实例中的TerroristAttack实例的attack()方法,该方法新建911匿名实例,传入attack()。

TerroristAttack的attack(BoomWTC bmw)接受一个实现BoomWTC接口的实例,并用接口变量bmw来引用传入的911匿名实例。然后,bmw.benLaDengDecide()调用911的benLaDengDecide()方法,返回一个true(假设今天是9月11日),然后通过if判断,执行轰炸。。。

对比来看:

androidOS main
new activity.onMenuItemSelected new 911.boom
fragment.onOptionItemSelected TerroristAttack.attack

因此当用户点击“选项菜单”时,Fragment会收到onOptionItemSelected(MenuItem)方法的回调请求,就是androidOS最终会调用onOptionItemSelected()响应--点击选项菜单--这个事件

android中的回调请求的个人理解的更多相关文章

  1. android中的回调

    1.引子 android中的回调最经典的就是点击事件设置监听(一般通过switch(v.getId()))这里写个最基本的 btn_rigister.setOnClickListener(new Vi ...

  2. android中使用WebView请求本地网页

    使用WebView的方式请参考我的上一篇文章:android中使用WebView请求网页 这里说一下请求本地网页的方法: 本地网页应该把网页保存在src/main/assets目录下: webView ...

  3. Android零基础入门第35节:Android中基于回调的事件处理

    原文:Android零基础入门第35节:Android中基于回调的事件处理 通过前面两期掌握了Android中基于监听的事件处理的五种形式,那么本期一起来学习Android中基于回调的事件处理. 一. ...

  4. Android中的Binder机制的简要理解

    转载自:http://www.linuxidc.com/Linux/2012-07/66195.htm http://blog.csdn.net/sunxingzhesunjinbiao/articl ...

  5. android中的回调简单认识

    首先说一下最抽象的形式--2个类,A类和B类.A类含有1个接口.1个接口变量.(可能含有)1个为接口变量赋值的方法以及1个会使用接口变量的"地方";B类实现A中的接口,(可能)含有 ...

  6. Android中解析网络请求的URL

    近期正在做Android网络应用的开发,使用了android网络请求方面的知识.如今向大家介绍网络请求方面的知识.我们知道android中向server端发送一个请求,(这就是我们通常所说的POST请 ...

  7. 抓包工具Fidder详解(主要来抓取Android中app的请求)

    今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以 ...

  8. Android中Parcelabel对象的使用和理解

    1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...

  9. Android中关于回调概念的笔记

    一.回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调 ...

随机推荐

  1. File类使用小结

    一.构造函数 File(String pathname):根据参数转换为抽象路径名创建File实例 File(String parent,String filename):根据parent和filen ...

  2. 深入学习jQuery节点操作

    × 目录 [1]创建节点 [2]插入节点 [3]删除节点[4]复制节点[5]替换节点[6]包裹节点 前面的话 DOM节点操作包括创建节点.插入节点.移除节点.替换节点和复制节点.jQuery也有类似的 ...

  3. JavaScript跨域调用、JSONP、CORS与ASP.NET Web API[共8篇]

    [第1篇] 同源策略与JSONP 浏览器是访问Internet的工具,也是客户端应用的宿主,它为客户端应用提供一个寄宿和运行的环境.而这里所说的应用,基本是指在浏览器中执行的客户端JavaScript ...

  4. Neutron Vlan Network 原理- 每天5分钟玩转 OpenStack(92)

    前面我们陆续学习了 Neutron local network,flat network 和 DHCP 服务,从本节将开始讨论 vlan network. vlan network 是带 tag 的网 ...

  5. iOS开发之SQLite-C语言接口规范(二) —— Prepared Your SQL Statements

    在<SQLite的C语言接口规范(一)>中介绍了如何去连接打开数据库,本篇博客就介绍如何操作数据库,本篇主要给出了如何执行数据库查询语句(Select), 然后遍历结果集.本篇博客就直接使 ...

  6. 一个简易的MysQL性能查询脚本

    如下: #!/bin/sh mysqladmin -P3306 -uroot -p ext |\ awk -F"|" \ "BEGIN{ count=0; }" ...

  7. Java 线程池框架核心代码分析--转

    原文地址:http://www.codeceo.com/article/java-thread-pool-kernal.html 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和 ...

  8. 探秘Tomcat——连接器和容器的优雅启动

    前言: 上篇<探秘Tomcat——启动篇>粗线条的介绍了在tomcat在启动过程中如何初始化Bootstrap类,加载并执行server,从而启动整个tomcat服务,一直到我们看到控制台 ...

  9. 关于Javascript作用域及作用域链的总结

    本文是根据以下文章以及<Javascript高级程序设计(第三版)>第四章相关内容总结的. 1.Javascript作用域原理,地址:http://www.laruence.com/200 ...

  10. CSS3 media queries + jQuery实现响应式导航

    目的: 实现一个响应式导航,当屏幕宽度大于700px时,效果如下: 当屏幕宽度小于700px时,导航变成一个小按钮,点击之后有一个菜单慢慢拉下来: 思路: 1.为了之后在菜单上绑定事件,并且不向DOM ...