你的位置:首页 > 操作系统

[操作系统]我的Android第五章:通过Intent实现活动与活动之间的交互


 Intent在活动的操作

       作用:

     Itent是Android程序中各个组件直接交换的一个重要方式可以指定当前组件要执行任务同时也可以给各个组件直接进行数据交互
              同时Intent启动往往可以启动活动,启动服务,以及发送广播等场景        

        分类

               1.显示Intent和隐示Intent

  显示Intent操作

    1.首先我们新建一个Android工程

 

    在分别讲解显示意图和隐示意图时我们要在rec目录 -layout资源新建活动 。

      

       然后右键点击新建一个activity_second.

             

      然后在该文件下添加一个按钮组件

<??><LinearLayout ="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical" >  <Button    android:id="@+id/button2"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="Button2" /></LinearLayout>

 

   2.新建一个活动

      在我们添加完按钮组件之后同时给按钮取个名字叫button2和唯一id名,然后在src 目录工程包下新建一个活动SecondActivity继承Activity类让其成为活动类

      然后重写onCreate()方法,同时给该活动设置上下文布局文件

package com.example.intentdome;import android.app.Activity;import android.os.Bundle;public class SecondActivity extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState) {	    super.onCreate(savedInstanceState);         setContentView(R.layout.activity_second);//读取我们刚才在layout资源文件新建的布局文件	}}

    3.然后在AndroidManifest.

<??><manifest ="http://schemas.android.com/apk/res/android"  package="com.example.intentdome"  android:versionCode="1"  android:versionName="1.0" >  <uses-sdk    android:minSdkVersion="17"    android:targetSdkVersion="17" />  <application    android:allowBackup="true"    android:icon="@drawable/ic_launcher"    android:label="@string/app_name"    android:theme="@style/AppTheme" >    <activity      android:name=".MainActivity"      android:label="@string/app_name" >      <intent-filter>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>    </activity>         <activity android:name=".SecondActivity"      >    </activity>  </application></manifest>

 

       以上步骤已经操作完毕,那我们开始下一步操作

  给按钮绑定事件

      1.给定MainActivit视图文件绑定一个点击事件

@Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //获取按钮对象    Button btn1 = (Button)findViewById(R.id.button1);    //给该按钮绑定一个监听事件    btn1.setOnClickListener(new OnClickListener() {            @Override      //当鼠标点击操作事着触发该操作      public void onClick(View v) {              }    });      }

 

      2.创建意图对象

 Intent的构  该类有多个构造函数其中一个Intent(Context packageCntext,Class<?> cls)  第一个参数:指定要启动的上下文  第二个参数:指定要启动的目标活动

   //获取一个意图对象
    Intent intent = new Intent(MainActivity.this,SecondActivity.class);

 


 

    3.实现活动启动之间的交互

@Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //获取按钮对象    Button btn1 = (Button)findViewById(R.id.button1);    //给该按钮绑定一个监听事件    btn1.setOnClickListener(new OnClickListener() {      @Override      //当鼠标点击操作事着触发该操作      public void onClick(View v) {        //获取一个意图对象        //实现活动与活动直接的交互        Intent intent = new Intent(MainActivity.this,SecondActivity.class);        //调用启动活动操作        startActivity(intent);      }          });      }

             

      隐示Intent操作

            特点:隐示它并不明确表面指出我们要启动那个活动,而是抽象的指定一系列action和category等信息

    1.实现隐示操作:打开AndroidManifest.

  <application    android:allowBackup="true"    android:icon="@drawable/ic_launcher"    android:label="@string/app_name"    android:theme="@style/AppTheme" >    <activity      android:name=".MainActivity"      android:label="@string/app_name" >      <intent-filter>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>    </activity>        <activity android:name=".SecondActivity">      <intent-filter >        <action android:name="com.example.intentdome.ACTION_START"/>         <category android:name="android.intent.category.DEFAULT"/>      </intent-filter>    </activity>  </application>

 

      2.重新编写MainActivity.java的按钮点击事件

 @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //获取按钮对象    Button btn1 = (Button)findViewById(R.id.button1);    //给该按钮绑定一个监听事件    btn1.setOnClickListener(new OnClickListener() {            @Override      //当鼠标点击操作事着触发该操作      public void onClick(View v) {        /*  //获取一个意图对象        //实现活动与活动直接的交互        Intent intent = new Intent(MainActivity.this,SecondActivity.class);        //调用启动活动操作        startActivity(intent);*/        Intent intent = new Intent("com.example.intentdome.ACTION_START");        startActivity(intent);      }          });      }

 

    3.运行:输出同样的结果

  使用隐示启动其他程序内部活动

        其实隐示不仅仅可以启动自己程序的活动,还可以启动其他程序的活动,使得Android多个应用共享成为了可以,这样程序与程序直接进行数据交换,这样就不用我们而外编写其他程序活动来操作了

       以下一个案例展示通过自己本程序去调用系统的浏览器来打开一个博客的网页操作

   1.重新编写MainActivity.java按钮点击事件

 @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //获取按钮对象    Button btn1 = (Button)findViewById(R.id.button1);    //给该按钮绑定一个监听事件    btn1.setOnClickListener(new OnClickListener() {            @Override      //当鼠标点击操作事着触发该操作      public void onClick(View v) {        Intent intent = new Intent(Intent.ACTION_VIEW);        intent.setData(Uri.parse("http://www.cnblogs.com/xiaotaojing/"));        startActivity(intent);      }          });      }