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=" ...
随机推荐
- js跳转页面的方法
js跳转页面的几种方法 第一种:(跳转到b.html) <script language="javascript" type="text/javascript&qu ...
- (转)Dubbo服务暴露过程源码分析
参考
- python 中的 [:-1] 和 [::-1]
1.案例解释 a='python' b=a[::-1] print(b) #nohtyp c=a[::-2] print(c) #nhy #从后往前数的话,最后一个位置为-1 d=a[:-1] #从位 ...
- Nginx如何配置反向代理
server { listen 80; server_name 代理域名; location / { proxy_pass 应用域名:应用端口; proxy_set_header Host $host ...
- 多线程编程-- part 6 共享锁和ReentrantReadWriteLock
介绍: ReadWriteLock,顾名思义,是读写锁.它维护了一对相关的锁 — — “读取锁”和“写入锁”,一个用于读取操作,另一个用于写入操作.(1)“读取锁”用于只读操作,它是“共享锁”,能同时 ...
- unicode 和utf-8,GBK编码
说到编码,得先从ASCII编码讲起.ASCII编码是由美国人发明,美国的字符不超过255个,所以ASCII编码使用了8bit 即一个字节来存储字符.由于汉字的数量远超255个,所以中国自己发明了一个G ...
- java多线程ExecutorService
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...
- mysql explain解析一 extra中的using index,using where,using index condition
1.简单介绍 using index 和using where只要使用了索引我们基本都能经常看到,而using index condition则是在mysql5.6后新加的新特性,我们先来看看mysq ...
- War of the Corporations CodeForces - 625B (greed)
A long time ago, in a galaxy far far away two giant IT-corporations Pineapple and Gogol continue the ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(15)|Unit Testing单元测试]
[易学易懂系列|rustlang语言|零基础|快速入门|(15)] 实用知识 Unit Testing单元测试 我们知道,在现代软件开发的过程中,单元测试对软件的质量极及重要. 今天我们来看看Rust ...