Java转Android:第5天 用Activity和Intent实现小通讯录
theme: juejin
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
今天学习Activity和Intent,学完之后,可以实现页面带参跳转(首页->详情->拨号):
一、我讲
今天,我主要讲,第一:Activity
的生命周期,应用场景;第二:Intent
的用途,利用它实现Activity
之间的传值跳转。
1.1 窗体 Activity
对于Activity
我们已经不陌生了,前面几期都用到了,我是这么解释的:
新建的项目,
layout
文件夹下的xml
管视图,java
文件下的Activity
管逻辑。
Activity
的代码就像下面这样:
java
public class MainActivity extends Activity {
……
@Override
protected void onResume() {
super.onResume();
}
……
}
其实,它的本质是提供一个屏幕,并处理用户和此屏幕的交互。
有时候,你使用App时,一个页面跳到另一个页面,有可能就是一个Activity
跳到另一个Activity
。
生命周期
生命周期是一个枯燥的理论,但是在项目实战中却很有用。生命周期是面试必问的话题之一,一些工作两三年的应聘者,会嫌问的刁钻,他们说实际做项目根本用不到。相反,5年以上安卓开发,对这个问题却能很好地回答。
生命周期,可以通俗地理解为“从摇篮到坟墓”的整个过程。
Activity
也是有生命周期的。相信大家都看到过这个图,这是安卓官方文档的一张图。
我总结成下面这个图,80%的精华都在这6个函数上。
我们重点关注Activity
什么时候创建销毁、可见不可见、能不能开始交互。有时候虽然界面可见,但是你没法和界面交互(比如一个Dialog
风格的Activity_B覆盖在Activity_A上面,虽然你能看见A,但是无法点击,此时A处于生命周期的onPause
。如果一个AlertDialog
对话框在Activity_A上弹出,虽然A也是可见不可交互,但是并不执行onPause
方法)。
写程序更多的是处理异常情况,Activity生命周期的应用场景,多数也是用在一些异常情况上。
了解什么时候处于什么状态,这一点非常关键。
看下面这个小例子,非常能说明问题:
- 当第一次打开Activity
,它提示:初次见面,多多关照。
- 当你准备要切换到其他程序时,它提示:等您回来。
- 当你后悔了,不切了,它提示:继续为您服务。
- 当你狠心退出,它又提示:再见,再见。
你敢说,你的App不会被用户这么操作吗?你能不关注这些操作对你正向流程的冲击吗?
1.2 意图 Intent
它负责对应用中一次操作的动作及数据进行描述,Android
则根据此Intent
的描述,找到对应的组件,完成调用。
一句话解释就是:你要去找谁(目标组件,比如Activity)?带着什么礼物(动作、描述)?
上面那个图,如果Activity-1想要启动Activity-2,那么就可以通过Intent
。
跳转指定Activity
Intent通过如下方式实现两个Activity之间的传值跳转。
跳转指定意图
除了跳转到明确的Activity
,Intent
也支持隐式跳转,比如它说我要打电话,发短信,系统就会分配到对应的跳转目标。
```java
// 调用系统打电话
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:12345"));
startActivity(intent);
// 调用系统发短信 Intent intent = new Intent(); intent.setAction(Intent.ACTION_SENDTO); intent.setData(Uri.parse("smsto:12345")); startActivity(intent); ```
二、你做
下面,我们要做这么一个功能,类似于通讯录:
第一个页面是联系人主页面MainActivity,上面只展示一个张三。点击张三,携带着张三的姓名和电话,跳转到第二个详情页面DetailActivity,第二个页面有个拨号按钮,点击调到系统的拨号盘。
首先,我们先写MainActivity
的布局文件activity_main.xml
,上面只有一个按钮。
```xml
``
注意啦,注意啦,上面的
TextView有一个属性
onClick="toDetail",另外
ConstraintLayout还有一个属性
context=".MainActivity",这代表
TextView有一个叫
toDetail的点击事件在
MainActivity中。这种方式可以替代
textView.setOnClickListenner`设置按钮事件。
下面就可以看到MainActivity
里有一个toDetail(View view)
方法,正好对应xml
里的设置。在这个方法里,我们看到,它采用Intent
进行传值跳转。
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void toDetail(View view) {
Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra("name","张三");
intent.putExtra("phone","666666");
startActivity(intent);
}
} ```
下面是跳转进入的详情页DetailActivity
的布局activity_detail.xml
,里面是2个文本,一个拨号按钮,同样,拨号按钮也采用了android:onClick="call"
的定义模式。
```xml
我们掌握了这个方法,就可以做出个性化定制功能,我想这也是学技术的意义所在。
三、关于
现在,行业内多是Android转Java,很少有Java转Android的。
但是,这并不妨碍Java同学了解Android开发,从学习的角度去拓宽自己的知识面。
所以,我会以最精简的语言来编写一个系列教程《Java转Android》(第一季30篇,日更)。
其实,不管是Java还是python,只要有编程基础的同学,一天看800字,30天可入门安卓。
- 实战第13篇:Sensor距离传感器实现小猪睡觉趣味App
- 认知史 23:乏力的后半程
- 认知史 20:当下,最好的安排
- 实战第9篇:SharedPreferences持久化存储记事本
- 认知史 15:远离那些过度激情的人
- Java转Android:第1天 HelloWorld
- 认知史 9:当上了领导,你自然会有大局观
- Java转Android:第5天 用Activity和Intent实现小通讯录
- Java转Android:第2天 用Button做了个抽奖App
- 认知史 6:迷茫时的自处方式
- 认知史 5:历史的作用
- 认知史 3:好聚好散
- RNN文本生成-想为女朋友写诗(一):训练文本
- AI实战课:利用TensorFlow预测你能否月薪过万
- 情绪宣泄App:十年前IT男编程撩妹纪实
- 代码生成OCR训练集,老板:没有数据?你new一个
- 【大话项目 】不懂开发可以带项目吗?
- 程序员到底该怎么管理?
- 我裁完兄弟们后,辞职了,转行做了一名小职员
- 人工智能图像实战课:夏天照片归类器