Activity( 活动 )
用户操作的可视化界面;为用户提供了一个完成操作指令的窗口
Activity是通过一个Activity栈来进行管理,当前显示的Activity被放到栈顶
当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示
在Android App 中只要能看见的几乎都要依托于Activity,Activity是在开发中使用最频繁的一种组件
一.创建Activity
第一步:创建一个类继承AppCompatActivity
第二步:在清单配置文件AndroidMainfest中声明这个类
第三步:如果这个Activity的布局是首页,则需要声明 intent-filter
二.启动Activity的两种方式
1.startActivity();
2.startActivityForResult();
三.Activity之间页面跳转
Activity之间的页面切换是通过Intent进行通信的
Intent中文翻译成意图,Intent(意图)主要是解决Android应用的各项组件之间的通讯,
Intent又分为两种,一种是显示意图,一种是隐式意图。
显示意图:明确指定组件名的Intent为显式意图,指定了Intent应该传递给那个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图,系统会根据隐式意图中设置的 动作(action) 类别(category)、数据URI等来匹配最合适的组件。
显示意图的跳转:
第一种方式
Intent intent=new Intent();
intent.setClass(MainActivity.this,SecondActivity.class);
startActivity(intent);
第二种方式
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
第三种方式
Intent intent = new Intent();
ComponentName componentName = new ComponentName(MainActivity.this, SecondActivity.class);
intent.setComponent(componentName);
startActivity(intent);
第四种方式
startActivity(new Intent(MainActivity.this, SecondActivity.class));
隐式意图的跳转
Intent intent = new Intent();
//参数放入跳转页面的action
intent.setAction("android.intent.action.MAIN");
startActivity(intent);
四.Activity之间的数据传输
Activity之间是通过Intent进行通信的。intent.putExtra()这个方法参数有多种可以满足数据传输需求,此方法以key-value的方式存储 键值对
第一种方式
//第一种方法是传输基本类型数据
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("name","xiao_ming");
第二种方式
//第二种方法是传输一个bundle,bundle类似一个map,可以防止key-value类型数据
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name","xiao_ming");
intent.putExtra("bundle",bundle);
第三种方式
//第三种方法传输一个序列化,这里User是implements Serializable之后才能传递
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("name",new User());
startActivity(intent);
五.实现上一个activity接收下一个activity关闭之后传递的数据
第一步
//写在MainActivity中
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,100);
第二步
//写在SecondActivity中
Intent intent = new Intent();
intent.putExtra("name","xiao_ming");
setResult(RESULT_OK,intent);
finish();
第三步
//写在MainActivity中
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==100&&resultCode==RESULT_OK){
//写需要执行的操作
}
}
创建MainActivity和SecondActivity,按以上三步走,就可以实现SecondActivity页面关闭后,MainActivity页面将打开,并获取SecondActivity传过来的数据
下一篇会给大家分享Activity的生命周期
注意事项
1. android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不 识别也不执行该Activity。
2. 在android stdio会自动生成配置,但eclipse需要自己手动添加配置
3. 在Android App 中只要能看见的几乎都要依托于Activity,Activity是在开发中使用最频繁的一种组件
4. 当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示