• 使用Intent实现Activity的隐式跳转


          相比于显式Intent,隐式Intent 则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action 和category 等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去启动。

           什么叫做合适的活动呢?简单来说就是可以响应我们这个隐式Intent 的活动,那么目前SecondActivity 可以响应什么样的隐式Intent 呢?额,现在好像还什么都响应不了,不过很快就会有了。

          第一步  通过在<activity>标签下配置<intent-filter>的内容,可以指定当前活动能够响应的action和category,打开AndroidManifest.xml,添加如下代码:

    [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。

           第二步    在MainAcivity 中调用setAction 及 addCategory 则可以实现隐式跳转

    [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 的内容已经生效了!

    下面是具体代码:

    MainActivity 部分:

    [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 部分

    [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>  
  • 相关阅读:
    PeerJS
    OpenEMM 2013 发布,电子邮件营销软件
    feh 2.9 发布,图像查看器
    PyPyODBC 0.9.2发布 纯Python实现的pyodbc替代库
    MariaDB 5.5.29, 5.3.12, 5.2.14, 5.1.67
    CouchDB 1.3.0的新特性以及算法的强化
    Boost 1.53.0 发布,可移植的C++标准库
    ActiveMQ 5.8.0 发布,JMS 消息服务器
    MySQL 5.5.30 发布
    CloverETL Designer 3.3.1 发布
  • 原文地址:https://www.cnblogs.com/chen-farsight/p/6192479.html
Copyright © 2020-2023  润新知