使用Intent进行活动间的跳转

显式Intent

button1.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this , SecondActivity.class);
        startActivity(intent);
    }
});

隐式Intent

隐式提供了action和category信息,交给系统分析这个Intent,找到合适的Activity,而不像显式那样直接指定跳转的界面

//首先要在要跳转的Activity的标签下配置,代码如下:
<Activity android:name = ".SecondActivity">
    <intent-filter>
        <action android:name = "包名.ACTION.START">
        //默认category
        <category android:name = "android.intent.category.DEFAULT">
    <intent-filter>
</Activity>
//在FirstActivity修改监听器的代码:
Intent intent = new Intent("能够符合响应的action的值");
intent.addCategory("能够符合响应的category的值");//每个intent只能指定一个action,但是能指定多个category
startActivity(intent);//自动将默认category添加到intent

隐式Intent 跳转到系统浏览器
Intent.ACTION_VIEW :android系统的内置动作
标签可以更加精确指定活动能够响应什么类型的数据

1.android:scheme 用于指定数据的协议部分
2.android:host 用于指定数据的主机名部分
3.android:port 用于指定数据的端口部分
4.android:path 用于指定主机名和端口之后的部分
5.android:mimeType 用于指定可以处理的数据类型

Intent intent = new Intent("Intent.ACTION_VIEW");
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

自定义Activity,可以响应打开网页的Intent

<Activity android:name = ".ThirdActivity">
    <intent-filter>
        <action android:name = "Intent.ACTION_VIEW">
        <category android:name = "android.intent.category.DEFAULT">
        <data android:scheme = "http">
    inter-filter>
Activity>

隐式跳转到系统拨号界面
Intent.ACTION_DIAL:android系统的内置动作

button1.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setData("tel:10086");
        startActivity(intent);
    }
});

带参传递

1.Intent和HashMap非常相似,Intent中有一个Bundle的成员变量
2.Bundle:专门用来携带数据的一个类,里面可以存放基本数据类型和数组、String和String数组、集合、以及序列化对象(序列化的id是读取和存储才用到的)
3.具体代码如下:

//第一个Activity
Intent intent = new Intent(this,TwoActivity.class );
//携带数据
intent.putExtra("name",zhangsan);
//第二个Activity
Intent intent = getIntent();
String name = intent.getStringExtra("name",null);

带参返回

//第一个Activity
Intent intent = new Intent(this,TwoActivity.class);
//启动
startActivity(intent,CODE启动码);//启动码随便给个唯一的常量
//重写onActivityResult()方法来接收数据
if(启动码 == CODE启动码) {
    if(返回码 == RESULT_OK)
        String name = intent.getStringExtra("result");
    else if(返回码 == RESULT_CANCELED)
}


//第二个Activity
Intent intent = new Intent();
intent.putExtra("result",result);
setResult(RESULT_OK|CANCELED,intent);
finish();

你可能感兴趣的:(带参返回,带参传递,显式Intent,隐式Intent,Android)