1. 程式人生 > >(三)使用Intent在活動中穿梭:顯式和隱式Intent

(三)使用Intent在活動中穿梭:顯式和隱式Intent

new findview public img 使用 匹配 ted listener style

一、顯式Intent

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

        Button btn=(Button)findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            
public void onClick(View v) { Intent intent=new Intent(MainActivity.this,Main2LayoutActivity.class); startActivity(intent); } }); }
  • 實現的效果是: 點擊id為button1的按鈕就會從MainActivity 這個活動跳轉到Main2LayoutActivity這個活動,即從MainActivity這個活動的布局跳轉到Main2LayoutActivity這個活動對應的布局。

二、隱式Intent

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

        Button btn=(Button)findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            
public void onClick(View v) { Intent intent=new Intent("com.example.myAction"); intent.addCategory("android.intent.category.DEFAULT"); startActivity(intent); } }); }
  • 與顯式區別在於,Intent的構造函數不再直接定義從哪個活動跳轉到哪個活動,而是匹配哪個活動的<action>和<category>符合Intent中指定的action和category。所以
  • 要想實現跳轉,則必須定義一個符合Intent中指定的action和category的活動。如下:

AndroidManifest.xml:

   <activity android:name=".Main2LayoutActivity">
            <intent-filter>
                <action android:name="com.example.myAction"></action>
                <category android:name="android.intent.category.DEFAULT"></category>
            </intent-filter>
        </activity>

效果:

技術分享

點擊按鈕:

技術分享

  •  intent.addCategory("android.intent.category.DEFAULT");可以省略,因為intent會默認自動帶上這個category。

  • 一個Intent只能指定一個Action,但是能指定多個category。

三、更多隱式Intent的使用

(三)使用Intent在活動中穿梭:顯式和隱式Intent