Android学习_7/23
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的更多相关文章
- Android学习系列(23)--App主界面实现
在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下 ...
- 我的android学习经历23
学习fragment时遇到的问题 这几天学习fragment静态加载时遇到这样的问题: java.lang.RuntimeException: Unable to start activity Com ...
- android学习笔记23——菜单
菜单在桌面应用程序中使用非常广泛,由于手机屏幕的制约,菜单在手机应用中减少不少. android应用中的菜单默认是不可见的,只有当用户单击手机上“Menu”键时,系统才会显示该应用关联的采用项. an ...
- Android学习笔记(23):列表项的容器—AdapterView的子类们
AdapterView的子类的子类ListView.GridView.Spinner.Gallery.AdapterViewFlipper和StackView都是作为容器使用,Adapter负责提供各 ...
- Android学习_7/27
一. 自定义控件 1. 引入布局 多个活动需要相同的布局时,使用引入布局的方式来实现代码复用. activity_main.xlm中加入<include la ...
- Android学习_7/26
四种基本布局 1. 线性布局(LinearLayout) android:layout_gravity:指定控件在布局中的对齐方式 android:gravity:指定文字在控件中的对齐方式 andr ...
- Android学习_7/25
常用控件 Android控件使用规律:先定义id,再指定宽度和高度,然后适当加入一些控件特有的属性 1. TextView 在界面上显示一段文本 2. Button ...
- Android学习_7/24
一. 活动的生命周期 1. 活动状态 运行:位于返回栈栈顶 暂停:不在栈顶,但仍可见 停止:不在栈顶,完全不可见 销毁:从栈中移除 2. 活动的生存期 ...
- Android学习_7/22
一.Android项目目录结构 1. AndroidManifest.xml:整个Android项目的配置,注册各组件 <activity android:name=" ...
随机推荐
- 从入门到自闭之Python递归
递归:不断地调用自身,用函数实现 死递归(死循环): def func(): print(1) func() func() 知识点:官方说明最大深度1000,但实际执行998或997以下,看电脑性能 ...
- 如何利用 CSS 的动画原理,创作一个乒乓球对打动画
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/rvgLzK 可交互视频教 ...
- python基础之初始函数
首先,为什么要使用函数? 函数的本质来说,就是写一串代码具有某些功能,然后封装起来,接下来可以很方便的调用 例如...然后... # s = '金老板小护士'# len(s) #在这里需求是求字符串s ...
- 最新省市区地区数据sql版本(2019年1月)
版本 统计标准2017版 来源 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/ 建表 CREATE TABLE `area` ( `id` varc ...
- Binding的简单使用
Binding可以看作是数据的桥梁,两端分别为Source和Target,一般情况,Source是逻辑层的对象,Target是UI层的控件对象,可以将数据从逻辑层送往UI层展现 简单的例子: clas ...
- golang(6): 接口 & 反射
接口详解 // 举例:sort包中的 Sort 函数,如下: func Sort(data Interface) Sort sorts data. It makes one call to data. ...
- Webpack loaderUtils.parseQuery()
https://blog.256pages.com/webpack-loaderutils-parsequery/
- 4.pca与梯度上升法
(一)什么是pca pca,也就是主成分分析法(principal component analysis),主要是用来对数据集进行降维处理.举个最简单的例子,我要根据姓名.年龄.头发的长度.身高.体重 ...
- concurrent.futures:线程池,让你更加高效、并发的处理任务
并发任务池 concurrent.futures模块提供了使用工作线程或进程池运行任务的接口. 线程池和进程池的API是一致的,所以应用只需要做最小的修改就可以在线程和进程之间进行切换 这个模块提供了 ...
- requests:用于发送http请求,专为人类设计
介绍 requests模块是一个专门用来发送http请求的模块 如何发送请求 import requests """ 使用requests模块发送请求非常简单 首先请求有 ...