Intent的用法(1)

戏子无情 提交于 2019-12-13 12:55:07

  什么是Intent?Intent在Android中的核心作用就是“跳转”(Android中的跳转机制),同时可以携带必要的信息,将Intent作为一个信息桥梁。最熟悉的莫过于从一个活动跳转到另一个活动,然后返回到上一个活动。不过Intent的“跳转”作用不仅于此,Intent还可以在其他地方使用,比如在碎片中跳转,接受到一个广播后自动跳转,但是这个时候没有活动(上下文)作为第一个参数该怎么办?问题早已解决。使用隐式跳转即可,他只需要一个参数,下面会提到隐式跳转,这就是有了显式跳转之后,隐式跳转还能存在的一个理由吧。

  接才来进入正题,学习使用Intent类和相关的API:

1)显示跳转到下一个活动。

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);   //startActivity方法

2)隐式跳转到下一个活动:需要下一个活动提供“匹配接口”Intentfilter。就相当于口令,一个人发出一条口令,另一个人对上了说明是自己人。

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:scheme="http"/>
</intent-filter>
Intent intent3 = new Intent(Intent.ACTION_VIEW);      //android.intent.action.VIEW
intent3.setData(Uri.parse("http://www.baidu.com"));//tel:10086    
startActivity(intent3);

3)传递数据

上一个活动向下一个活动传递数据

intent.putExtra("extra_data", "dafadfadfa");   //键值对

下一个活动提取数据

intent = getIntent(); 
String data = intent.getStringExtra("extra_data");    //通过键提取数据

还有:

getIntExtra(String key, int defaultInt);

getBooleanExtra(String key, boolean defaultBoolean);

getCharExtra(String key, char defaultChar);

4)返回数据给上一个活动

上一个活动发出请求

startActivityForResult(intent, 1);   //请求码

下一个活动返回数据

Intent intent = new Intent();
intent.putExtra("data_return", "Hello MainActivity");
setResult(RESULT_OK, intent);
finish();

上一个活动接受信息

//重写onActiviResult方法
@Override
protected void onActivityResult(int requstCode, int resultCode, Intent data){
    switch (requstCode){   //请求码
        case 1:
            if(RESULT_OK == requstCode){  //处理结果码 RESULT_CANCELED
                String returnResult = data.getStringExtra("data_return");
            }
            break;
        default:
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!