Intent在活動的操作 作用: Itent是Android程式中各個組件直接交換的一個重要方式可以指定當前組件要執行任務同時也可以給各個組件直接進行數據交互 同時Intent啟動往往可以啟動活動,啟動服務,以及發送廣播等場景 分類 1.顯示Intent和隱示Intent 顯示Intent操作 1. ...
Intent在活動的操作
作用:
Itent是Android程式中各個組件直接交換的一個重要方式可以指定當前組件要執行任務同時也可以給各個組件直接進行數據交互
同時Intent啟動往往可以啟動活動,啟動服務,以及發送廣播等場景
分類
1.顯示Intent和隱示Intent
顯示Intent操作
1.首先我們新建一個Android工程
在分別講解顯示意圖和隱示意圖時我們要在rec目錄 -layout資源新建活動 。
然後右鍵點擊新建一個activity_second.xml佈局文件
然後在該文件下添加一個按鈕組件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="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.xml工程配置文件中註冊一個活動
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="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.xml文件重新編寫activity的內容
<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); } }); }