我是靠谱客的博主 高挑楼房,最近开发中收集的这篇文章主要介绍Android_Intent学习记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Intent可以指明当前组件想要执行的动作,可以在不同的组件之间传递数据。可以用于启动活动,启动服务,发送广播等。。

显式:
Intent intent = new Intent(Acitity1.this,Activity.class);
startActivity(intent)

Intent()的第一个参数填入Acitity1作为启动活动的Context,第二个参数填入目标活动。然后通过startActivity()来执行intent
隐式:
隐式的Intent则是 在AndroidManifest.xml中配置action和category来作为匹配条件,由系统匹配合适的活动
category可以指定多个条件
<activity android : name=".MainActivity">
<intent-filter>

//指明当前活动可以响应的acntion
<action android : name="android.intent.action.MAIN"/>
//category中包含了附加信息
<category android : name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
必须同时满足<action>和<category>中的内容,才能响应这个Intent

Intent intent = new Intent (android.intent.action.MAIN);
intent.addCategroy ("android.intent.category.LAUNCHER");
startActivity(intent)

使用Intent启动其它程序内的活动
指定Intent的action是Intent.ACTION_VIEW,然后通过Uri.parse()方法把一个网址字符串解析成uri,
再调用setData()方法将uri传递给intent

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData (Uri.parse ("http://www.baidu.com") );
startActivity( intent );
在<intent-filter>标签中也可以再配置<data>标签,提升响应精确度
android:scheme 用于指定协议部分(http)
android:host 用于指定主机名部分(www.baidu.com)
android:port 用于指定数据端口部分
android:path 用于指定端口之后的部分
android:mimeType 指定可以处理的数据类型,允许使用通配符。

除了http之外还可以使用geo,tel
intent.setData (Uri.parse ("tel:12345") );

向下一个活动传递数据

putExtra()方法可以把想要传递的数据暂存入intent中,启动另一个活动后,再从intent中取出数据。
Activity1:
String data = "hhhhhh" //用于传提的数据
Intent intent = new Intent (Activity1.this,Activity2.class);
intent.putExtra ( "extra_data " , data ) //第一个参数是键,第二个参数是值
startActivity(intent);
Activity2: //获取Activity1中的data
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
根据传递的数据类型不同可以使用getIntExtra(),getBooleanExtra()等方法。

返回数据给上一个活动

在Activity中有个startActivityForResult()方法,这个方法在活动销毁的时候能够返回一个结果给上一个活动。
Activity1
点击事件:
Intent intent = new Intent (Activity1.this,Activity2.calss);
startActivityForResult(intent,1); //这里不再是使用startActivity()了

//因为在Activity2被销毁后会回调上一个活动的onActivityResult()方法,所以需要在Activity1重写这个方法来获取返回的数据
@Override
protected void onActivityResult( int requestCode, int resuleCode, Intent data) {
//这里的第一个参数是启动活动时传入的请求码,第二个参数是返回数据时传入的处理结果,第三个参数是带有返回数据的Intent
switch (requestCode):{ //通过requestCode来判断数据来源
case 1:
if(resultCode == RESULT_OK) { //通过resultCode的值来判断处理结果是否成功
String returnedData = data.getStringExtra("data_return");
}
break;
default:
}
}

Activity2
点击事件:
Intent intent = new Intent();
intent.putExtra("data_return","hhhhhhh");
//setResult()方法,专门用于向上一个活动返回数据,第一个参数用于向上一个活动返回处理结果一般只使用RESULT_OK或RESULT_CANCELED
//第二个参数把带有数据的intent传递回去

setResult (RESULT_OK,intent);
finish();

//如果是直接通过back键返回上一个Activity,就需要重写onBackpressed()方法来返回数据
@Override
public void onBackpressed(){
Intent intent = new Intent();
intent.putExtra("data_return","hhhhhhh");
setResult(RESULT_OK,intent);
finish();
}

转载于:https://my.oschina.net/u/3908812/blog/1846540

最后

以上就是高挑楼房为你收集整理的Android_Intent学习记录的全部内容,希望文章能够帮你解决Android_Intent学习记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部