android intent 隱式意圖和顯示意圖(activity跳轉)

來源:互聯網
上載者:User

android中的意圖有顯和隱式意圖兩種,

顯要求必須知道被啟用組件的包和class

隱式意圖只需要知道跳轉activity的動作和資料,就可以啟用對應的組件

A 主activity  B 接收跳轉的activity

步驟

1:在主設定檔中聲明B 至少要聲明一個android:name屬性

[html] 
<activity 
           android:name=".DemoActivity" 
           android:label="@string/demoActivity" > 
           <intent-filter> 
 
               <!-- 隱士意圖中指定intent的名字 自己定義 可匹配多項 --> 
               <action android:name="com.itcast.intent.DemoActivity" /> 
               <!-- 隱式intent需要指定的activity的類型,可自己定義該值,需要在調用的時候相對應不寫該項預設為 android.intent.category.DEFAULT,可匹配多項 --> 
               <category android:name="android.intent.category.DEFAULT" /> 
               <!-- 指定傳想該activity數值的類型 和主機,如果指定該項,就必須在跳轉activity的時候傳入還資料和主機名稱 --> 
               <data 
                   android:host="cn.itcast.demo" 
                   android:scheme="itcast" /> 
           </intent-filter> 
       </activity> 
 

 2:在A的布局檔案中一個textview和button,並添加點擊事件

[html] 
<TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="第一個activity" /> 
 
   <Button 
       android:id="@+id/button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:onClick="open" 
       android:text="跳轉" /> 
3:點擊事件觸發的集中intent意圖

[java] 
/**
     * 意圖,描述一個動作,啟用一個組件,使用其他的activity需要現在主檔案中配置activity的名字等屬性
     * intent 要去做一件事
     * 
     * @param view
     */ 
    public void open(View view) { 
        /**
         * 方法一
         */ 
        Intent intent1 = new Intent(); 
        // 1.是當前的包名,2跳轉activity的類名,一定要加上包名 
        intent1.setClassName("com.itcast.intent", "com.itcast.intent.DemoActivity"); 
        // startActivity(intent1); 
        /**
         * 方法二
         */ 
        Intent intent2 = new Intent(this, DemoActivity.class); 
        // startActivity(intent2); 
        /**
         * 方法三
         */ 
        Intent intent3 = new Intent(); 
        ComponentName component = new ComponentName("com.itcast.intent", "com.itcast.intent.DemoActivity"); 
        intent3.setComponent(component); 
        // startActivity(intent3); 
        /**
         * 上面三種方法要求必須知道被啟用組件的包和class,稱為顯
         */ 
        // ******************************************************************// 
        /**
         * 隱式意圖只需要知道跳轉activity的動作和資料,就可以啟用對應的組件<br>
         * 如果要啟用另外程式的組件
         */ 
        Intent intent = new Intent(); 
        intent.setAction("com.itcast.intent.DemoActivity"); 
        // 不管在主設定檔中有沒有聲明跳轉activity的category,都要寫該項,不然報錯找到activity,不些有系統會以默認的類型 
        intent.addCategory("android.intent.category.DEFAULT"); 
        // 如果在聲明activity的時候指定了data屬性,在跳轉的時候就一定要設定他的data屬性值,和配置的屬性值相等,不然也會報找不到的錯誤 
        intent.setData(Uri.parse("itcast://cn.itcast.demo")); 
        // startActivity(intent); 
        Intent imageIntent = new Intent(); 
        imageIntent.setAction(Intent.ACTION_PICK); 
        imageIntent.setType("image/*");// 設定資料類型 
        startActivity(imageIntent); 
    } 

DemoActivity 不需要做任何事,只要繼承activity,並重寫他的oncreate方法就可以了,這個例子只是測試activity的跳轉的幾個方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.