【Android学习笔记】使用Intent启动活动

使用显式Intent

创建一个新的工程IntentTestProject,工程结构如下:

【Android学习笔记】使用Intent启动活动_第1张图片

 编写MainActivity界面代码:




    

 编写FirstActivity界面代码:




    

编写MainActivity代码,点击按钮显示启动活动FirstActivity:

package com.example.intenttestproject;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button button1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button1 = findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //使用显式Intent启动活动
                Intent intent = new Intent(MainActivity.this,FirstActivity.class);
                startActivity(intent);
            }
        });
    }
}

运行APP

【Android学习笔记】使用Intent启动活动_第2张图片

 

点击按钮,启动活动1,想回到上一个活动的话,按下back键,即可销毁当前活动回到上一个活动。

【Android学习笔记】使用Intent启动活动_第3张图片

 

 使用隐式Intent

隐式Intent并不明确指出我们想要启动哪一个活动。而是指定了一系列更加抽象的action和category等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去响应它。

创建一个新的活动SecondActivity,编写界面代码:




    

编写SecondActivity代码:

package com.example.intenttestproject;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class SecondActivity extends AppCompatActivity {

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

修改MainActivity界面代码,新增按钮2,用于隐式启动活动2:




    

修改MainActivity代码,为按钮2新增点击事件:

package com.example.intenttestproject;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button button1,button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button1 = findViewById(R.id.button_1);
        button2 = findViewById(R.id.button_2);

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //使用显式Intent启动活动
                Intent intent = new Intent(MainActivity.this,FirstActivity.class);
                startActivity(intent);
            }
        });

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //使用隐式Intent启动活动,每个Intent只能指定一个action,但能指定多个category
                Intent intent = new Intent("com.example.intenttestproject.ACTION_START");
                //调用startActivity()方法的时候,会自动将android.intent.category.DEFAULT这个默认category添加到intent中
                intent.addCategory("com.example.intenttestproject.MY_CATEGORY");
                startActivity(intent);
            }
        });

    }
}

需要注意的是:使用隐式Intent启动活动2时,需要修改AndroidManifest中对SecondActivity的配置,为其添加action和category属性。其中android.intent.category.DEFAULT是必须有的,即使不为intent指定category属性,它也会在调用startActivity()方法时自动添加。

修改后的AndroidManifest内容如下:




    
        
            
                
                
                
            
        
        
        
        
            
                
                
            
        
    

启动APP:

【Android学习笔记】使用Intent启动活动_第4张图片

点击按钮2,对隐式启动活动的功能进行测试:

【Android学习笔记】使用Intent启动活动_第5张图片

发现可以顺利启动。

更多的隐式Intent用法可以参考郭大神的《第一行代码》,这里只进行简单的编码实践,嘻嘻...

参考书籍:《第一行代码》

你可能感兴趣的:(Android学习笔记)