2.3.1 使用显式 Intent

# app/src/main/res/layout/second_layout.xml<?xml version="1.0" encoding="utf-8"?>    
# app/src/main/java/com/example/activitytest/SecondActivity.javapublic class SecondActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.second_layout);    }}
# app/src/main/AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>                                 #指定活动标题                               #设为主活动                 #设为启动器                                                        #注册第二个活动            
public class FirstActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.first_layout);        Button button1 = (Button) findViewById(R.id.button_1);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // 实例化 Intent,第一个参数为当前上下文,第二个参数为要启动的目标活动                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);                // 启动目标活动                startActivity(intent);            }        });    }

2.3.2 使用隐式 Intent

            # 指定当前活动相应的行为是 ACTION_START                # 指定当前活动相应的分类是 DEFAULT            
public class FirstActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.first_layout);                Button button1 = (Button) findViewById(R.id.button_1);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // 实例化 Intent,并设置行为是 ACTION_START,不设置分类则默认分类是 DEFAULT                Intent intent = new Intent("com.example.activitytest.ACTION_START");                startActivity(intent);            }        });    }

增加活动分类:

            # 指定当前活动相应的行为是 ACTION_START                # 指定当前活动相应的分类是 DEFAULT                # 指定当前活动相应的分类是 MY_CATEGORY            
public class FirstActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.first_layout);                Button button1 = (Button) findViewById(R.id.button_1);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // 实例化 Intent,并设置行为是 ACTION_START                Intent intent = new Intent("com.example.activitytest.ACTION_START");                // 为 Intent 设置分类是 MY_CATEGORY                intent.addCategory("com.example.activitytest.MY_CATEGORY");                startActivity(intent);            }        });    }

2.3.3 更多隐式 Intent 的用法

button1.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        // 实例化 Intent,并设置行为是 ACTION_VIEW        Intent intent = new Intent(Intent.ACTION_VIEW);        // 设置 Intent 的 Uri        intent.setData(Uri.parse("https://www.baidu.com"));        // 启动活动,会打开系统浏览器访问设置的网址        startActivity(intent);    }});
<?xml version="1.0" encoding="utf-8"?>    
                            # 指定数据的协议部分是 http            

调用系统拨号界面:

button1.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        Intent intent = new Intent(Intent.ACTION_DIAL);        intent.setData(Uri.parse("tel:10086"));        startActivity(intent);    }});

2.3.4 向下一个活动传递数据

button1.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        String data = "Hello SecondActivity";        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);        // 暂存数据到 Intent 中        intent.putExtra("extra_data", data);        startActivity(intent);    }});
public class SecondActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.second_layout);        Intent intent = getIntent();        // 从 Intent 中取出数据        String data = intent.getStringExtra("extra_data");        Log.d("SecondActivity", data);    }

2.3.5 返回数据给上一个活动

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.first_layout);    Button button1 = (Button) findViewById(R.id.button_1);    button1.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            Intent intent = new Intent(FirstActivity.this, SecondActivity.class);            // 启动活动,并接受活动销毁时返回的数据,第二个参数为请求码,用于判断数据的来源            startActivityForResult(intent, 1);        }    });}// 下一个活动被销毁时的回调函数@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    // 判断数据来源    switch (requestCode) {        case 1:            if (resultCode == RESULT_OK) {                String returnedData = data.getStringExtra("data_return");                Log.d("FirstActivity", returnedData);            }            break;        default:    }}
public class SecondActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d("SecondActivity", "Task id is " + getTaskId());        setContentView(R.layout.second_layout);        Button button2 = (Button) findViewById(R.id.button_2);        button2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent();                // 暂存数据到 Intent 中                intent.putExtra("data_return", "Hello FirstActivity");                // 向上一个活动返回数据,第一个参数一般为 RESULT_OK                setResult(RESULT_OK, intent);                // 销毁当前活动                finish();            }        });    }    // 绑定按下返回键时的逻辑,与按钮点击的逻辑一致    @Override    public void onBackPressed() {        Intent intent = new Intent();        intent.putExtra("data_return", "Hello FirstActivity");        setResult(RESULT_OK, intent);        finish();    }}

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. 《Android开发从零开始》——25.数据存储(4)
  4. Android系统配置数据库注释(settings.db)
  5. Android中不同应用间实现SharedPreferences数据共享
  6. Android之应用程序基础
  7. android图表ichartjs
  8. Android(安卓)命令行编译、打包生成apk文件
  9. Android内容提供者源码

随机推荐

  1. MySQL索引的基础初识
  2. mysql关闭严格模式
  3. MySQL的安装和基本管理
  4. 如何在php imap函数中看到看不见的电子邮
  5. Ubuntu中安装MySql与简单操作
  6. 【mysql 优化 5】左连接和右连接优化
  7. 数据库相关零散知识点记录
  8. mysql 反向生成 er图
  9. 用过mysql存储过程和oracle存储过程的哥
  10. mysql 拷贝表(复制表)的几种方式