1.        在活动中使用Menu

1)        什么是Menu?

2)        怎么实现?

step1:res目录下创建Menu resource file,使用<item…/>

step2:活动中创建菜单(重写onCreateOptionsMenu())

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main,menu);    //inflate()方法为当前活动创建菜单
    return true;    //true表示允许创建的菜单显示出来
}

step3:定义菜单响应事件(重写onOptionsItemSelected())

@Override
public boolean onOptionsItemSelected(@NonNull
MenuItem item) {
    switch (item.getItemId()){
        case    R.id.add_item:
            Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
            break;
        case    R.id.remove_item:
            Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
            break;
        default:
    }
    return true;
}

item.getItemId()判断点击哪个菜单项

2.       
lntent

1)       
作用:各组件间进行交互,活动响应Intent

2)       
显式Intent:Intent intent =
new Intent(FirstActivity.this, SecondActivity.class);

隐式Intent:

a)       
什么活动会响应隐式Intent?

AndroidManifest.xml中活动的<action>、<category>、<data>等标签同时匹配Intent指定的action和category。

每个Intent对象只能指定一个action:Intent intent =
new Intent("com.sprd.activitytest.ACTION_START");

但可以指定多个category:intent.addCategory("com.sprd.activitytest.MY_CATEGORY");(已有默认category,再加一个category)

加上data的话:

intent.setData(Uri.parse("http://www.google.com"));     //setData()指定当前Intent正在操作的数据

对应活动清单中要有<data android:scheme=”http”>

b)       
使用隐式Intent启动其他程序的活动

上网:Intent intent = new
Intent(Intent.ACTION_VIEW);

打电话:Intent intent = new Intent(Intent.ACTION_DIAL);

ACTION_VIEW和ACTION_DIAL都是系统内置的常量值。

c)       
Intent传递数据

传数据给下一个活动:

                                                   
i.             
活动1使用putExtra()将数据暂存在Intent对象中,然后用这个Intent启用活动2

intent.putExtra("extra_data",data);    
//putExtra()传递数据

                                                 
ii.             
活动2就可以使用getIntent()取出启用自己的Intent

                     Intent intent = getIntent();

然后用getStringExtra()去取数据值

String data = intent.getStringExtra("extra_data");

传数据给上一个活动:

                                                    i.              活动1使用startActivityForResult()启用活动2,startActivityForResult()可以启用活动,并在活动2销毁时能够返回结果给上一个活动,即在活动2销毁时回调活动1的OnActivityResult()方法。

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);      //      第二个参数是请求码

                                                 
ii.             
活动2构建一个仅传数据的Intent,然后调用setResult()方法,setResult专门用于向上一个活动返回数据,该方法两个参数:处理结果(RESULT_OK,RESULT_CANCELED)和带数据的Intent

Intent intent = new Intent();
intent.putExtra("data_return","Hello
FirstActivity");
setResult(RESULT_OK,intent);    //setResult专门用于向上一个活动返回数据,该方法两个参数:处理结果(RESULT_OK,RESULT_CANCELED)和带数据的Intent
finish();

                                               
iii.             
活动1中重写onActivityResult()方法,用该方法来得到返回的数据。该方法有三个参数:请求码、数据处理结果、携带返回数据的Intent。

请求码判断数据来源于哪个活动

resultCode判断处理结果是否成功

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    switch (requestCode){
        case 1:
            if(resultCode
== RESULT_OK){
                String returnData =
data.getStringExtra("data_return");
                Log.d("FirstActivity",returnData);
            }
            break;
        default:
    }
}

Android学习_7/23的更多相关文章

  1. Android学习系列(23)--App主界面实现

    在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下 ...

  2. 我的android学习经历23

    学习fragment时遇到的问题 这几天学习fragment静态加载时遇到这样的问题: java.lang.RuntimeException: Unable to start activity Com ...

  3. android学习笔记23——菜单

    菜单在桌面应用程序中使用非常广泛,由于手机屏幕的制约,菜单在手机应用中减少不少. android应用中的菜单默认是不可见的,只有当用户单击手机上“Menu”键时,系统才会显示该应用关联的采用项. an ...

  4. Android学习笔记(23):列表项的容器—AdapterView的子类们

    AdapterView的子类的子类ListView.GridView.Spinner.Gallery.AdapterViewFlipper和StackView都是作为容器使用,Adapter负责提供各 ...

  5. Android学习_7/27

    一.           自定义控件 1.         引入布局 多个活动需要相同的布局时,使用引入布局的方式来实现代码复用. activity_main.xlm中加入<include la ...

  6. Android学习_7/26

    四种基本布局 1. 线性布局(LinearLayout) android:layout_gravity:指定控件在布局中的对齐方式 android:gravity:指定文字在控件中的对齐方式 andr ...

  7. Android学习_7/25

     常用控件 Android控件使用规律:先定义id,再指定宽度和高度,然后适当加入一些控件特有的属性 1.         TextView 在界面上显示一段文本 2.         Button ...

  8. Android学习_7/24

    一.           活动的生命周期 1.        活动状态 运行:位于返回栈栈顶 暂停:不在栈顶,但仍可见 停止:不在栈顶,完全不可见 销毁:从栈中移除 2.        活动的生存期 ...

  9. Android学习_7/22

    一.Android项目目录结构 1.         AndroidManifest.xml:整个Android项目的配置,注册各组件 <activity android:name=" ...

随机推荐

  1. 自动生成ID

    public class IdUtil { /** * * @return 返回时间id,类似于20191217195622 */ public static String timeId(){ Dat ...

  2. linux 安装 python 最全教程

    环境:centos6.5 centos6.5 自带的 python 版本是 2.6.6,需要重新安装 2.7: centos7 自带的 python 版本是 2.7.5 基本操作 在安装新版本之前,一 ...

  3. js数据结构-链表

    链表和数组 大家都用过js中的数组,数组其实是一种线性表的顺序存储结构,它的特点是用一组地址连续的存储单元依次存储数据元素.而它的缺点也正是其特点而造成,比如对数组做删除或者插入的时候,可能需要移动大 ...

  4. Sleepy Game CodeForces - 936B

    大意: 给定有向图, 初始点S, 两个人轮流移动, 谁不能移动则输, 但后手睡着了, 先手可以控制后手操作, 求最后先手结果. 刚开始看错了, 还以为后手也是最优策略.... 实际上判断是否有偶数个节 ...

  5. Vue中如何插入m3u8格式视频,3分钟学会!

    ​        大家都知道video只支持ogg.webm.MP4格式,但是要是m3u8格式的视频怎么办?最近遇到这个问题在网上找了好多办法都不行,最后找到video.js后才完美解决,所以决定写一 ...

  6. java实现RPC

    一,服务提供者 工程为battercake-provider,项目结构图如下图所示 1.1 先创建一个“卖煎饼”微服务的接口和实现类 package com.jp.service; public in ...

  7. 《编译原理》求 FIRSTVT 集和 LASTVT 集的步骤 - 例题解析

    <编译原理>求 FIRSTVT 集和 LASTVT 集的步骤 - 例题解析 算符优先关系表的构造中涉及到求 FIRSTVT 集和 LASTVT 集. 表示及含义: FIRSTVT(T) 非 ...

  8. noi.ac NA535 【生成树】

    因为太蠢一直写T1也没仔细想,赛后发现是个真小清新思维题,本质构造??? 首先显然不会无解,这个随随便便证一下就有了 另外给的式子没啥意义,也就能说明颜色随机???害人不浅 然后就从\(1\)开始,钦 ...

  9. poj3666/CF714E/hdu5256/BZOJ1367(???) Making the Grade[线性DP+离散化]

    给个$n<=2000$长度数列,可以把每个数改为另一个数代价是两数之差的绝对值.求把它改为单调不增or不减序列最小代价. 话说这题其实是一个结论题..找到结论应该就很好做了呢. 手玩的时候就有感 ...

  10. 拒绝被坑!如何用Python和数据分析鉴别刷单!?

    发际线堪忧的小Q,为了守住头发最后的尊严,深入分析了几十款防脱洗发水的评价,最后综合选了一款他认为最完美的防脱洗发水. 一星期后,他没察觉到任何变化. 一个月后,他用卷尺量了量,发际线竟然后退了0.5 ...