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.这里是接口、调用者、执行者

//相当于接口InA
public interface BoomWTC{
//获得拉登的决定
public benLaDengDecide(); // 执行轰炸世贸
public void boom();
} //相当于class A
public class At$911 implements BoomWTC{//相当于【背景1】
private boolean decide;
private TerroristAttack ta;//相当于【背景2】 public At$911(){
Date now=new Date();
SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
this.dicede= myFmt.format(dt).equals("01/09/11 09:44");
this.ta=new TerroristAttack();
} //获得拉登的决定
public boolean benLaDengDecide(){
return decide;
} // 执行轰炸世贸
public void boom(){
ta.attack(new At$911);//class A调用class B的方法传入自己的对象,相当于【you call me】
}
} //相当于class B
public class TerroristAttack{
public TerroristAttack(){
} public attack(BoomWTC bmw){——这相当于【背景3】
if(bmw.benLaDengDecide()){/*class B在方法中回调class A的方法,相当于【i call you back】*/
   
}
}
}

2.这里是主函数

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

流程:在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. HighCharts从数据库中读取数据

    1.index.js router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); ...

  2. javascript运动系列第三篇——曲线运动

    × 目录 [1]圆周运动[2]三维圆周 [3]钟摆运动 [4]抛物线[5]流体运动 前面的话 上一篇介绍了变速运动,但只实现了直线运动.如果元素的left和top同时运动,并遵循不同的曲线公式,则会进 ...

  3. 用javascript做一个视频播放器

    以前我们在网页上播放视频,都是要麻烦flash来实现.看着那一大段的<object>真心觉得累.随着html5的不断普及,现在是时候使用html5提供的video元素来做点正经事了,但是要 ...

  4. 【记录】SqlBulkCopy 跨数据库,表自定义导入

    使用场景: 一个数据库中的表数据,导入到另一个数据库中的表中,这两个表的表结构不一样,如果表结构一样的时候,导入非常简单,直接读取导入就行了,表结构不一样,就意味着需要加入一些判断,SqlBulkCo ...

  5. [OpenCV] Background subtraction

    不错的草稿.但进一步处理是必然的,也是难点所在. http://docs.opencv.org/master/d1/dc5/tutorial_background_subtraction.html#g ...

  6. Hammer.js分析(四)——recognizer.js

    不同识别器会使用不同逻辑,根据从相关Input类获取到的事件对象和事件,实现自定义的触屏事件,例如tap.pinch等. 一.继承关系 Recognizer与前面的Input一样,也相当于是个抽象类. ...

  7. JSON导出CSV中文乱码解决方案

    前言 以往datagrid导出数据全部在后台搞定,现在就想换中思路去解决,正常情况下使用easyui datagrid ajax获取数据源时都是json格式,那么此时需要导出数据时只要把该数据源扔出来 ...

  8. 分享一个UI与业务逻辑分层的框架(三)

    序言 前两篇讲解了UIMediator框架的使用及具体原理代码.本篇讲述MediatorManager的实现代码及展望. MediatorManager MediatorManager的作用有两点: ...

  9. 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言

    1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等. 2. CSS样式是表现.就像网页的外衣.比如,标题字体.颜色变化,或为标题加入背景图片. ...

  10. 【非原创】IOS 验证文字是否是中文

    从环信中找到的部分不错的代码,拿出来记录一下 是否是中文 -(BOOL)isChinese{ NSString *match=@"(^[\u4e00-\u9fa5]+$)"; NS ...