初窥Intent
来源:互联网 发布:路由器网络延迟不稳定 编辑:程序博客网 时间:2024/06/03 13:15
在firstActivity里写的一段代码
Button button1 =(Button) findViewById(R.id.button_1);
button1.setOnClickListener(newView.OnClickListener()
{
public voidonClick(View v)
{
String s = " HelloNext";
Toast.makeText(FirstActivity.this,"you clicked Button1",Toast.LENGTH_SHORT).show();
Intenti = newIntent("6");
i.putExtra("extra_data",s);
startActivity(i);
}
});
在AndroidMainfest.xml里注册的东西
<activityandroid:name=".SecondActivity">
<intent-filter>
<actionandroid:name="6"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
通过今天的学习,intent像一个容器
首先他能装载一个活动,第一行代码用的是隐式intent
只需要键入一个action name即可
在注册表中 将第二个活动 附上 action的name 即可进行访问
橙色代码部分也可以替换为如下代码
Intent ii = new Intent(FirstActivity.this,SecondActivity.class);
这种代码形式为显示intent
需要键入两个参数,一个参数需要一个活动触发的类,另一个是 需要触发的活动
两种代码形式都能访问需要访问的活动
Intent还能调用手机里的一些活动
代码如下:
Intent intent =new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:15846585631"));
startActivity(intent);
通过 setData 函数 与Uri函数可以将浏览器甚至拨号器的一些功能传入intent里面
再通过startActivity函数启动活动
这段代码直接可以实现给电话号码拨号
下面在附上用隐式代码写的访问网页的代码
首先创建一个新的Intent
Intent it = new Intent(Intent.ACTION_DIAL);it.setData(Uri.parse("http://www.baidu.com"));startActivity(it);
在注册表里的 data android:scheme 协议是http
<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="http"/></intent-filter>
现在键入这一串值之后现在ThirdActivity就和浏览器一样可以打开浏览器
Intent 的一个功能是存储数据
利用intent的putExtra函数
需要键入两个值,第一个值是key,第二个值是 String
代码如下:
String s = " HelloNext";Toast.makeText(FirstActivity.this,"you clicked Button1",Toast.LENGTH_SHORT).show();Intent i = new Intent("6");i.putExtra("extra_data",s);startActivityForResult(i,1);
在第二个个活动中取出
用getIntent函数
代码如下:
Button btn2 =(Button)findViewById(R.id.button_2);Intent in = getIntent();String s = in.getStringExtra("extra_data");Toast.makeText(SecondActivity.this,s,Toast.LENGTH_SHORT).show();
以上三行代码能从一个活动传递数据到下一个活动
Intent还能把数据传递到上一个活动
代码如下:
在第一个活动中
Intent i = new Intent("6");startActivityForResult(i,1);
Intent intent = new Intent();intent.putExtra("data for FA","HelloFA");setResult(RESULT_OK,intent);finish();
通过putExtra函数把数据存进,还是像上一段代码一样,
需要一个key值,一个String
SetResult函数用来存储 resultCode
一般只用两个值 RESULT_OK 或是 RESULT_CANCELED
在主类以外复写一个函数
复写函数如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data){ switch (requestCode) { case 1: if(resultCode == RESULT_OK) { String returnedData = data.getStringExtra("data for FA"); Log.d("FirstActivity",returnedData); Toast.makeText(FirstActivity.this,returnedData,Toast.LENGTH_SHORT).show(); } }}
之后就能将次活动中的数据传递到上一个活动中去了
总结:
把一个数据从一个活动传递到下一个活动中时要
要用引用.putExtra(key,String)函数传递一个key值,和一个String类型数据
在下一个活动中接收数据时要用两个函数
Intent it = getIntent();
再用String s = in.getStringExtra("extra_data")函数接收
把一个数据传递到前一个活动,首先要用
startActivityForResult(i,1);
把一个活动与请求值传入函数中,这个函数可以理解成一个活动用密码请求一个结果、
而在第二个函数中我们需要设置这个结果
intent.putExtra("data for FA","HelloFA");setResult(RESULT_OK,intent);
第一个intent中装活动跟请求值,第二个活动装数据 setResult 存储结果值跟数据
最后在复写你的函数加入你的逻辑就能把数据成功传递
protected void onActivityResult(int requestCode, int resultCode, Intent data)
- 初窥Intent
- intent
- Intent
- Intent
- Intent
- intent
- Intent
- intent
- Intent
- Intent
- Intent
- Intent
- Intent
- Intent
- intent
- Intent
- intent
- Intent
- vb.net 教程 5-16 图像处理之ImageAttributes 类2 颜色矩阵2
- redis 配置文件 redis.conf解读
- C语言数据结构——二叉链表
- 滚动哈希(Rabin-Karp算法)
- linux命令sort详解
- 初窥Intent
- Kotlin 从学习到 Android 第五章 返回和跳转
- 回溯法--矩阵中的路径问题(java)
- myeclipse中的web项目导入到eclipse中出现的问题及解决办法
- CQU TaoSama与煎饼 (dp)
- 关于Eclipse启动报错,jvm版本不匹配的问题
- sql自关联查询
- 美
- 关于HTML兼容性