AndroidStudio_Cha2_2

2.3 使用 Intent在活动之间穿梭

      点击App图标,直接跳到主活动,那么进入活动,就要用Intent了。

  2.3.1 显式 Intent

      首先,创建第二个SeocndActivity.     

      这里其实非常简单,就是说在第一个activity的按钮事件中加入,intent(context, 目标事件)即可。

button1.setOnClickListener(new View.OnClickListener(){    // 创建监听
    @Override
    public void onClick(View v){
       Intent intent = new Intent(FirstActi.this, SecondActivity.class);   //  (context,想要启动的目标活动)
        startActivity(intent);
    }

       然后利用startActivity()方法来启动活动。

       这样,在第一个activity中点击按钮,就会跳入第二个activity。这里的intent目标非常明显,所以叫显式intent。

  2.3.2 隐式intent

         隐式intent并不明确指出我们想要启动哪个活动。它指定一系列抽象的action & category,由系统分析,找出合适的活动(可以响应隐式intent的活动)去启动。a&c要同时匹配。

        此时,通过配置manifest中activity 中<intent-filter>标签中的a&c(见上一段),指定当前活动能够响应的a&c。

<activity android:name=".SecondActivity"></activity>
    <intent-filter>
        <action android:name="com.mike.cha2_activity.ACTION_START"/>  // 这里的路径如果是对的话都会有自动代码  
        <category android:name="android.intent.category.DEFAULT"/>     //默认的cat
    </intent-filter>

        同时更改intent函数

public void onClick(View v){

    Intent intent = new Intent("com.mike.cha2_activity.ACTION_START");   //  这是用了intent另外一个构造函数,将action的字符串传入
    startActivity(intent);
}

      说明要启动可以响应"com.ex......"这个action的活动。而上面的cat是默认的cat,调用startActivity()方法自动添加Cat到Intent.                      启动,成功。

       intent中,action只能有一个,cat可以有多个。   intent.addCat("")即可添加

intent.addCategory("com.mike.cha2_activity.MY_CATEGORY");

       此时在要启动的secondAct的Mani中,<intent-filter>内添加相应的<cat  即可。

  2.3.3 更多隐式Intent用法

        不仅对于程序内部,也可以用于程序之间(这就是说我们的分享之类的东西)

        改写button_1的代码

public void onClick(View v){
    Intent intent = new Intent(Intent.ACTION_VIEW);          // 指定了Intent的action是 Intent.ACTION_VIEW
    intent.setData(Uri.parse("http://www.baidu.com"));       // Uri.parse("")方法解析字符串成为uri对象,再setData()方法把对象传递进去
  startActivity(intent);
}

       这时候,点击button_1就会启动浏览器访问 百度。实现了程序间的穿梭

       新建一个ThirdActivity,写入一个button_3,在Manifest中对ThirdActivity代码改写

<activity android:name=".ThirdActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>            //当前活动能够响应的action是VIEW常量
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="http"/>                                      //相应的数据协议必须是http协议
    </intent-filter>
</activity>

    <data> 标签中更加精确地指定,响应什么类型的数据。

android:scheme,指定数据的协议部分

android:host    主机名部分,例如www.baidu.com

android:port   端口,一般在主机名后面

android:path  路径,一般在端口后面

android:mimeType  可以处理的数据类型

阅读更多
文章标签: AnroidStudio_CH2
个人分类: 原创
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭