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的方法。
本博客基于网络课程完成,旨在学习,有错误请指正!