Android学习之启动活动的最佳写法
•开始热身
通过之前的学习,我们现在可以很容易的启动一个活动;
首先通过 Intent 构造出当前的 “意图”,然后调用 startActivity() 方法将活动启动起来;
如果需要传递数据,也可以借助 Intent 来完成;
•准备工作
新建一个项目,命名的话,我干了,您随意;
选择 No Activity;
进入项目后,将项目结构手动改为 Project 模式;
点击 app/src/main/java,在相应的包名下新建一个 Empty Activity,命名为 FirstActivity;
并将该活动设置为主活动;
接着新建一个 Empty Activity,命名为 SecondActivity;
•今日份话题
假设 SecondActivity 中需要用到非常重要的数据,在启动 SecondActivity 的时候必须要传过来;
我们可以编写如下代码;
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
String data1 = "data1";
String data2 = "data2";
intent.putExtra("data1",data1);
intent.putExtra("data2",data2)
startActivity(intent);这样写是完全正确的,不管是从语法上还是规范上;
只是在真正的项目开发中经常会有对接的问题出现;
比如 SecondActivity 并不是由你开发的,但现在你负责的部分需要启动 SecondActivity;
而你却不清楚启动这个活动需要传递什么数据。
这是无非有两种办法:
- 阅读 SecondActivity 的源码
- 询问负责编写 SecondActivity 的同事
是不是略微有点麻烦?
其实只需换一种写法,就可以轻松解决这个麻烦;
修改 SecondActivity.java 中的代码;
public class SecondActivity extends AppCompatActivity { public static void actionStart(Context context, String data1,String data2){
Intent intent = new Intent(context,SecondActivity.class);
intent.putExtra("data1",data1);
intent.putExtra("data2",data2);
context.startActivity(intent);
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}我们在 SecondActivity 中添加了一个 actionStart() 方法;
在这个方法中完成了 Intent 的构建;
另外,所有 SecondActivity 中需要的数据都是通过 actionStart() 方法的参数传递过来的;
然后把它们存储到 Intent 中,最后调用 startActivity() 启动 SecondActivity;
这样写的好处就是:
- 一目了然
- SecondActivity所需要的数据在方法中全部体现出来了
- 简化了启动活动的代码
- 在 FirstActivity.java 中,只需要一行代码就可以启动 SecondActivity
- SecondActivity.actionStart(FirstActivity.this,"data1","data2");
Android学习之启动活动的最佳写法的更多相关文章
- Android启动活动的最佳写法
1.我们一般启动另一个活动的方式是: Intent intent = new Intent(MainActivity.this,SecondActivity.class); intent.putExt ...
- Android开发之启动Activity的最佳写法
从MainActivity跳转到SecondActivity 在SecondActivity中,写一个静态方法actionStart() public static void actionStart( ...
- android学习-Activity启动过程详解
注:只是说明启动activity的过程(ActivityThread如何与ActivityManagerService简称AmS进行进程间通信调用全过程),不解析android从zygote(受精卵) ...
- 10月9日Android学习笔记:活动与服务之间的通信
最近在照着<第一行代码>这本书来学安卓,顺便记下笔记.主要的内容是Android中服务的第二种启动方式,通过活动绑定服务来启动服务,实现活动与服务之间的通信. 一. 首先创建一个服务类 p ...
- Android学习路-activity活动
activity即活动,是一种包含用户界面的组件,用于与用户进行交换 创建activity类 1.类继承Activity, activity传递一个bundle对象,可以获得onSaveInsta ...
- Android学习:ActionBar活动条
菜单定义: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android=" ...
- Android学习之基础知识四-Activity活动8讲(活动的灵活运用)
一.判断当前是在哪个活动 1.我们还是接着上一讲的代码,首先创建一个Java类:BaseActivity.java.这个类我们不作为一个活动,也不在AndroidManifest.xml中注册,它只是 ...
- (Android第一行代码实验一)活动的最佳实践
活动的最佳实践 1.知晓当前是在哪一个活动 这个技巧将教会你,如何根据程序当前的界面就能判断出这是哪一个活动. 首先需要新建一个 BaseActivity 继承自 Activi ...
- android:活动的最佳实践
2.6.1 知晓当前是在哪一个活动 这个技巧将教会你,如何根据程序当前的界面就能判断出这是哪一个活动.可能你会觉 得挺纳闷的,我自己写的代码怎么会不知道这是哪一个活动呢?很不幸的是,在你真正进入 ...
随机推荐
- STAR 法则
STAR 法则 STAR: Situation, Task, Action, Result 一. 什么是 STAR 法则? STAR法则是情境(situation).任务(task).行动(actio ...
- JavaScript & Automatic Semicolon Insertion
JavaScript & Automatic Semicolon Insertion ECMA 262 真香警告️ https://www.ecma-international.org/ecm ...
- node.js & read argv
node.js & read argv https://nodejs.org/docs/latest/api/process.html https://flaviocopes.com/node ...
- 抓手 & 技术管理
抓手 & 技术管理 https://zhuanlan.zhihu.com/p/28891618 技术管理的目的 管理就是通过别人拿到结果.而管理的两个着眼点就是:成事.育人. 把事情搞定,把人 ...
- VAST维萨币二月发行,高倍币重现江湖!
市场长期的历史经验表明,经营盈利能力最好的企业,经常是那些现在的经营方式与5年前甚至10年前几乎完全相同的企业.这个经营模式放到币圈也是一样的,2020年的挖矿是最火的,这个模式现在在市场也同样受用. ...
- [报错集]ubuntu中安装oracle java报错
1.因为版本更新,JAVA15以前的版本都已经没办法下载了,所以要使用oracle java必须使用最近的java15 $ sudo apt-get install oracle-java15-ins ...
- 一次 MySQL 线上死锁分析实战
关键词:MySQL Index Merge 前言 MySQL 的锁机制相信大家在学习 MySQL 的时候都有简单的了解过,那既然有锁就必定绕不开死锁这个问题.其实 MySQL 在大部分场景下是不会存在 ...
- CentOS7安装Maven3.6.3及Git2.8.3
安装Maven3.6.3 点击进入官网 1:下载 wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-m ...
- 基于vue3+electron11实现QQ登录切换|自定义导航栏|托盘|打包
上一篇有给大家分享过使用vue3和electron快速搭建项目.创建多窗口/父子modal窗口的一些方法.今天继续给大家分享一些vue3.x+electron11项目开发中的一些知识点/踩坑记录,希望 ...
- 开发在线教育平台项目步骤(Python3.7.6 + Django 3.0)
1. 新建虚拟环境 mkvirtualenv eduonline 2. 安装mysql数据库 pip install mysqlclient pip install pymysql 3. 在setti ...
