android学习笔记(一)

1.认识android的Activity组件

Activity是什么

1.什么是Activity:Activity(活动)就是一个用于和用户交互的组件。
2.在实际的应用场景里面,比如一个拨打电话的界面就是一个Activity。
3.Activity是可以嵌套启动的。比如,你在拨打电话的界面可以选择编辑短信的功能,当你点击编辑短信的时候,跳至编辑短信的界面(短信是另一个交互的界面,就是另一个Activity)。

Activity绑定自定义视图

在 MainActivity中,有一个onCreate()方法(这里先不说明它的作用),其中有一个语句:
//设置内容视图
setContentView(R.layout.activity_main);
它的作用就是绑定一个视图界面。通过它你可以绑定自己想要的布局,而不一定是默认的布局页面。

启动一个Activity

在主活动中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取activity_xml(和这个activity关联的视图界面)的button
// 通过findViewById的方式在R文件中寻找
Button button = (Button) findViewById(R.id.startActivity);
// 设置按钮监听事件
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
// Intent负责activity的参数传递,现在暂时可以理解为通过Intent建立两个activity之间的跳转
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
// startActivity启动
startActivity(intent);
}
});
}

2.Activity的生命周期

这里写图片描述

  • onCreate():第一次创建的时候被调用。
  • onStart():显示给前台调用。
  • onResume():与用户进行交互的时候调用。
  • onPause():暂停一个activity的时候调用。
  • onStop():对用户不可见的时候调用。
  • onRestart():重新显示的时候调用。
  • onDestory():销毁activity的时候调用。

3.Activity之间传递参数

简单的数据传递

步骤:在主活动中,使用putExtra()方法输入要传递的数据,在第二个活动中用getStringExtra()方法接收(注意:这里的getStringExtra()是因为传递的是字符串,如果是其他类型,那么可以是其他的类似的接收方法)。
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
// Intent负责activity的参数传递,现在暂时可以理解为通过Intent建立两个activity之间的跳转
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
//其中第一个参数是传递的数据集合的名字,第二个是传递的内容
intent.putExtra("data","这是被传递的数据");
// startActivity启动
startActivity(intent);
}
});
// 获取textview
TextView textView = (TextView) findViewById(R.id.textView);
// 通过getIntent()来获取传递的值
Intent intent = getIntent();
String content = intent.getStringExtra("data");
// 设置让传递的数据显示在TextView里面
textView.setText(content);

传递数据包Bundle

MainActivity.java

Intent负责activity的参数传递,现在暂时可以理解为通过Intent建立两个activity之间的跳转
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
Bundle bundle = new Bundle();
bundle.putInt("age",1);
bundle.putString("name","leo");
// 注意这里用的是putExtras()
intent.putExtras(bundle);
// startActivity启动
startActivity(intent);

Main2Activity.java

// 获取textview
TextView textView = (TextView) findViewById(R.id.textView);
Intent intent = getIntent();
// 通过Bundle获取
Bundle data = intent.getExtras();
// 设置让传递的数据显示在TextView里面
// 注意最后的data.getString()方法,还可以设置本来没有的数据,其中的“man”对应的参数是默认值
textView.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age"),data.getString("sex","man")));
除了上面的Bundle使用,还可以在主活动中用getExtra("名字",Bundle)来传递(上面用的是getExtras()),在接收的部分用getBundleExtra("名字").

MainActivity.java

Intent负责activity的参数传递,现在暂时可以理解为通过Intent建立两个activity之间的跳转
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
Bundle bundle = new Bundle();
bundle.putInt("age",1);
bundle.putString("name","leo");
// 注意这里用的是putExtra()
intent.putExtra("data",bundle);
// startActivity启动
startActivity(intent);

Main2Activity.java

获取textview
TextView textView = (TextView) findViewById(R.id.textView);
Intent intent = getIntent();
// 通过Bundle获取
Bundle data = intent.getBundleExtra("data");
// 设置让传递的数据显示在TextView里面
// 注意最后的data.getString()方法,还可以设置本来没有的数据,其中的“man”对应的参数是默认值
textView.setText(String.format("name=%s,age=%d,sex=%s",data.getString("name"),data.getInt("age"),data.getString("sex","man")));

和intent传值相比,Bundle传递数据更加简洁。具体的使用需要结合实际的场景来理解。

传递值对象

值对象:自定义,有数据结构的对象

1.采用Serializable的方式(序列化的方式)
创建一个自定义的对象:

//这里使用序列化的方式
public class user implements Serializable {
String name ;
int age;
//使用get和set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//一个构造函数
public user(String name , int age){
this.name = name;
this.age = age;
}
}

MainActivity.java

Intent负责activity的参数传递,现在暂时可以理解为通过Intent建立两个activity之间的跳转
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("User", (Serializable) new user("张三",15));
// startActivity启动
startActivity(intent);

Main2Activity.java

TextView textView = (TextView) findViewById(R.id.textView);
Intent intent = getIntent();
user u = (user) intent.getSerializableExtra("User");
textView.setText(String.format("User Info(name = %s,age = %d)",u.getName(),u.getAge()));

传递数据

1.startActivityForResult()

startActivityForResult()方法相比于startActivity()就是可以接收返回的一个参数(数据)。两者都是启动Activity的方法。

posted on   码的艺术家  阅读(190)  评论(0编辑  收藏  举报

编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示