《第一行代码》第二章/Toast,Menu,Intent
2015-10-28 10:28
344 查看
1:Toast:
Toast是一个提醒消息框,用于将一些短小的信息通知给用户,不占用屏幕空间,而且会在一段时间后自动消失。
例子
2:menu:
在res/menu/目录下新建xml文件,在里面写入类似这样的代码:
3:Intent:
用于在Activity,Service,广播,内容提供器等组件间来回穿梭,跳转。
Intent可以指定用于启动活动,服务,广播等,或者在组件间来回传递信息。主要分为显式Intent和隐式Intent。
1)显式Intent
举例:启动另一个活动:
2)隐式Intent
并不明确指出我们要启动哪一个活动,通过action,category等信息表达,交由系统分析到底做什么。
例子:
在AndroidManifest.xml文件中的第二个活动(要打开的)的<activity>部分中添加<intent-filter>,在其中指定该活动响应的action和category。
添加<intent-filter>部分:
当其与开始的活动的Intent指定的action和category匹配时,这个活动就会响应Intent。
有点像广播的说。
Intent指定action和category:
更多隐式Intent的用法:
打开网页:
调用Android内置动作ACTION_VIEW,即打开系统浏览器。通过Uri.parse()将一个网址字符串解析成一个Uri对象,调用Intent的setData()方法传入uri。
同样需要在AndroidManifest.xml里注册
再比如在活动中调用拨号
3)那么如何在活动之间传递数据呢?
范例:从FirstActivity传data到SecondActivity
FirstActivity:
SecondActivity:
onCreate():
4)返回数据给上一个活动
范例:从FirstActivity返回data到SecondActivityFirstActivity:
使用startActivityForResult()以返回数据的目的启动SecondActivity
得到数据:
SecondActivity:
Toast是一个提醒消息框,用于将一些短小的信息通知给用户,不占用屏幕空间,而且会在一段时间后自动消失。
例子
Toast.makeText(this, "xxxxxxx", Toast.LENGTH_SHORT).show();参数:(context上下文,"文本信息",toast显示时长)
2:menu:
在res/menu/目录下新建xml文件,在里面写入类似这样的代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.tony.book.activitymenu.MainActivity" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" /> <item android:id="@+id/add_item" android:title="Add"></item> <item android:id="@+id/remove_item" android:title="remove"></item> </menu></span>然后在mainActivity中重写onCreateOptionMenu()为当前活动创建菜单和onOptionsItemSelected()添加菜单相应事件,如:
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. 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: break; } return true; }
3:Intent:
用于在Activity,Service,广播,内容提供器等组件间来回穿梭,跳转。
Intent可以指定用于启动活动,服务,广播等,或者在组件间来回传递信息。主要分为显式Intent和隐式Intent。
1)显式Intent
举例:启动另一个活动:
Intent intent=new Intent(MainActivity.this,secondActivity.class); startActivity(intent);Intent有多种构造函数,我们选用其中一种来完成启动下一个活动的功能。重载该构造函数(context上下文,要打开的活动)并将意图具现化为intent,传入startActivity()启动目标活动。
2)隐式Intent
并不明确指出我们要启动哪一个活动,通过action,category等信息表达,交由系统分析到底做什么。
例子:
在AndroidManifest.xml文件中的第二个活动(要打开的)的<activity>部分中添加<intent-filter>,在其中指定该活动响应的action和category。
添加<intent-filter>部分:
<activity android:name=".secondActivity" android:launchMode="singleInstance"> <intent-filter > <action android:name="com.example.activitytest.ACTION_START" /> <category android:name="android.intent.category.DEFAULT"/> <category android:name="com.example.activitytest.MY_CATEGORY" /> </intent-filter> </activity>
当其与开始的活动的Intent指定的action和category匹配时,这个活动就会响应Intent。
有点像广播的说。
Intent指定action和category:
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
更多隐式Intent的用法:
打开网页:
调用Android内置动作ACTION_VIEW,即打开系统浏览器。通过Uri.parse()将一个网址字符串解析成一个Uri对象,调用Intent的setData()方法传入uri。
Intent intent=new Intent(Intent.ACTION_VIEW)
intent.setData(Uri.parse("http://www.baidu.com"))
同样需要在AndroidManifest.xml里注册
<data android:scheme="http">
再比如在活动中调用拨号
Intent intent=new Intent(Intent.ACTION_DIAL)
intent.setData(Uri.parse("tel:10086))
3)那么如何在活动之间传递数据呢?
范例:从FirstActivity传data到SecondActivity
FirstActivity:
String data="Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("extra_data", "data");//(键,数据) startActivity(intent);
SecondActivity:
onCreate():
Intent intent=getIntent(); String data=intent.getStringExtra("extra_data");
Log.d("SecondActivity",data);
4)返回数据给上一个活动
范例:从FirstActivity返回data到SecondActivityFirstActivity:
使用startActivityForResult()以返回数据的目的启动SecondActivity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivityForResult(intent,1);1是请求码
得到数据:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub switch (requestCode) { case 1: if(resultCode==RESULT_OK){ String returnedData=data.getStringExtra("data_return"); Log.d("MainActivity", returnedData); } break; default: break; } }
SecondActivity:
Intent intent=new Intent(); intent.putExtra("data_return", "Hello MainActivity"); setResult(RESULT_OK, intent);//(处理结果,数据) finish();
相关文章推荐
- 关于spring事务回滚的处理2、3事
- Sizegrip 实例
- C中如何调用C++函数
- eclipse提示workspace无法打开的问题
- spring的isotion的属性的特征
- Asp Url汉字乱码的问题
- TeacherManageController 代码记录
- 获取JAVA文件路径(包括服务器环境文件路径)
- java Vamei快速教程15 IO基础
- java中有关“变量”内存分配问题
- java IO输入输出流详解
- 代码动态添加控件
- Category - 3
- java ee web开发学习笔记
- C++引用深度分析
- Python Profilers性能分析器
- C语言C++语言中静态变量和静态函数
- Spring MVC前台属性数据的传递和后台属性数据的接收
- 从头认识java-4.9 枚举类型
- java项目中pdf转图片格式(jpg)