Android之Intent

圖片.png

一、顯式意圖和隱式意圖

圖片.png

1.1 顯式

圖片.png
package com.example.jony.appdemo1;

import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btn_one;
    private Button btn_two;
    private Button btn_three;
    private Button btn_four;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_one = (Button) findViewById(R.id.btn_one);
        btn_two = (Button) findViewById(R.id.btn_two);
        btn_three = (Button) findViewById(R.id.btn_three);
        btn_four = (Button) findViewById(R.id.btn_four);

        btn_one.setOnClickListener(this);
        btn_two.setOnClickListener(this);
        btn_three.setOnClickListener(this);
        btn_four.setOnClickListener(this);

//        btn_one.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                System.out.println("點(diǎn)擊按鈕1");
//                Intent intent = new Intent();
//                intent.setClass(MainActivity.this, Activity1.class);
//                startActivity(intent);
//            }
//        });

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_one:
                Intent intent1 = new Intent();
                intent1.setClass(this, Activity1.class);
                startActivity(intent1);
                break;

            case R.id.btn_two:
                Intent intent2 = new Intent();
                intent2.setClassName(this, "com.example.jony.appdemo1.Activity1");
                startActivity(intent2);
                break;

            case R.id.btn_three:
                Intent intent3 = new Intent();
                //可以打開其他應(yīng)用的Activity
                intent3.setClassName("com.example.jony.appdemo1", "com.example.jony.appdemo1.Activity1");
                startActivity(intent3);
                break;

            case R.id.btn_four:
                Intent intent4 = new Intent();
                intent4.setComponent(new ComponentName(this, Activity1.class));
                startActivity(intent4);
                break;

            default:
                break;
        }

    }
}

1.2 隱式

作用:可用于分享給與自身配置了同樣的intent-filter的應(yīng)用程序

        <activity android:name=".Activity2">
            <intent-filter>
                <action android:name="com.appdemo1.activity2" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
         case R.id.btn_five:
                Intent intent5 = new Intent();
                intent5.setAction("com.appdemo1.activity2");
                intent5.addCategory(Intent.CATEGORY_DEFAULT);
                startActivity(intent5);
                break;

二、 Intent Filter

startActivity(intent5)
-->將intent傳給所有的Activity組件
-->s首先排除沒有配置Intent Filter的Activity組件
-->過濾器對(duì)Intent Filter的內(nèi)容進(jìn)行匹配(所有的程序)
-->如果沒有匹配的則報(bào)錯(cuò),匹配的顯示,讓用戶選擇

圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Intent是一種運(yùn)行時(shí)綁定(run-time binding)機(jī)制,它能在程序運(yùn)行過程中連接兩個(gè)不同的組件。通過...
    專屬守護(hù)閱讀 815評(píng)論 0 1
  • Intent Intent介紹 Intent是Android應(yīng)用組件之間通信的消息對(duì)象,它通常表明了兩個(gè)通信組件的...
    whyles閱讀 487評(píng)論 0 4
  • 注:本文完全拷貝自https://developer.android.com/guide/components/i...
    RxCode閱讀 1,790評(píng)論 1 13
  • “慈母手中線,游子身上衣。臨行密密縫,意恐遲遲歸……”,每當(dāng)我讀著這首詩,我就會(huì)想起我的媽媽。我的媽媽慈祥、勤勞、...
    煜百草園閱讀 523評(píng)論 0 1
  • 看著自己存在后臺(tái)里的待寫文章,只有一個(gè)標(biāo)題和幾十個(gè)字的開頭,再看看上次更新的文章知道自己老毛病又犯了,不知道自己是...
    慧眼識(shí)魚閱讀 404評(píng)論 2 6