使用Intent實現Activity的隱式跳轉

      相比於顯式Intent,隱式Intent 則含蓄了許多,它並不明確指出咱們想要啓動哪個活動,而是指定了一系列更爲抽象的action 和category 等信息,而後交由系統去分析這個Intent,並幫咱們找出合適的活動去啓動。java

       什麼叫作合適的活動呢?簡單來講就是能夠響應咱們這個隱式Intent 的活動,那麼目前SecondActivity 能夠響應什麼樣的隱式Intent 呢?額,如今好像還什麼都響應不了,不過很快就會有了。android

      第一步  經過在<activity>標籤下配置<intent-filter>的內容,能夠指定當前活動可以響應的action和category,打開AndroidManifest.xml,添加以下代碼:app

[java]  view plain  copy
 
  1. <activity   
  2.             android:name="cn.com.qiang.buttonjump.SecondActivity">  
  3.             <intent-filter >  
  4.                 <action android:name="jump"/>  
  5.                 <category android:name="android.intent.category.DEFAULT"/>  
  6.             </intent-filter>  
  7. </activity>  

       在<action> 標籤中咱們指明瞭當前活動能夠響應com.example.activitytest.ACTION_START 這個action,而<category>標籤則包含了一些附加信息,更精確地指明瞭當前的活動可以響應的Intent 中還可能帶有的category。只有<action>和<category>中的內容同時可以匹配上Intent 中指定的action 和category 時,這個活動才能響應該Intent。ide

 

       第二步    在MainAcivity 中調用setAction 及 addCategory 則能夠實現隱式跳轉spa

[java]  view plain  copy
 
  1. button1.setOnClickListener(new OnClickListener() {  
  2.               
  3.     @Override  
  4.     public void onClick(View v) {  
  5.         Intent intent = new Intent();  
  6.         intent.setAction("jump");  
  7.         intent.addCategory("android.intent.category.DEFAULT");  
  8.                   
  9.         startActivity(intent);  
  10.     }  
  11. });  

從新運行程序,在MainActivity 的界面點擊一下按鈕,你一樣成功啓動SecondActivity了。不一樣的是,此次你是使用了隱式Intent 的方式來啓動的,說明咱們在<activity>標籤下配置的action 和category 的內容已經生效了!.net

 

下面是具體代碼:xml

MainActivity 部分:blog

[java]  view plain  copy
 
  1. package cn.com.qiang.buttonjump;  
  2.   
  3. import android.os.Bundle;  
  4. import android.app.Activity;  
  5. import android.content.Intent;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9.   
  10. public class MainActivity extends Activity {  
  11.   
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.activity_main);  
  16.       
  17.         Button button1 = (Button)findViewById(R.id.button1);  
  18.         button1.setOnClickListener(new OnClickListener() {  
  19.               
  20.             @Override  
  21.             public void onClick(View v) {  
  22.                 Intent intent = new Intent();  
  23.                 intent.setAction("jump");  
  24.                 intent.addCategory("android.intent.category.DEFAULT");  
  25.                   
  26.                 startActivity(intent);  
  27.             }  
  28.         });  
  29.     }  
  30. }  

AndroidManfest.xml 部分ip

[java]  view plain  copy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="cn.com.qiang.buttonjump"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="8"  
  9.         android:targetSdkVersion="17" />  
  10.   
  11.     <application  
  12.         android:allowBackup="true"  
  13.         android:icon="@drawable/ic_launcher"  
  14.         android:label="@string/app_name"  
  15.         android:theme="@style/AppTheme">  
  16.         <activity  
  17.             android:name="cn.com.qiang.buttonjump.MainActivity"  
  18.             android:label="@string/app_name" >  
  19.             <intent-filter>  
  20.                 <action android:name="android.intent.action.MAIN" />  
  21.   
  22.                 <category android:name="android.intent.category.LAUNCHER" />  
  23.             </intent-filter>  
  24.         </activity>  
  25.           
  26.         <activity   
  27.             android:name="cn.com.qiang.buttonjump.SecondActivity">  
  28.             <intent-filter >  
  29.                 <action android:name="jump"/>  
  30.                 <category android:name="android.intent.category.DEFAULT"/>  
  31.             </intent-filter>  
  32.         </activity>  
  33.     </application>  
  34.   
  35. </manifest>  
相關文章
相關標籤/搜索