Android Studio学习笔记--Activity的创建与使用
Activity的作用
Activity是Android程序中的四大组件之一,为用户提供可视化界面及操作。一个应用程序通常包含多个Activity,每个Activity负责管理一个用户界面
Activity的创建
在应用程序已创建的情况下选中【File】->【New】->【Activity】->【Empty Activity】
会出现如下创建Activity的界面
Activity Name 是你要创建的Activity的名字,该项下面的Generate a Layout File 若勾选,则在创建该Activity时同时创建一个布局文件,并在该页面Layout Name处填写你要创建的布局文件的名字;若你创建的Activity不需要布局文件,则可选择不勾选此项。
Launcher Activity 勾选则设置该Activity为最先启动界面,一般选择默认不勾选即可。
Packge name 表示包名,默认即可。
Source Language表示编写该Activity所用编程语言,默认即可。
Activity的创建需要在清单文件AndroidManifest.xml文件中注册,使用上面方法创建的Activity,Android Studio 会自动帮你注册。而通过在源文件夹中创建Activity文件,则需要手动在清单文件中注册。
Activity 的生命周期
Activity的生命周期有:启动状态,运行状态,暂停状态,停止状态,销毁状态。
而生命周期主要涉及了7种方法:onCreate();onStart();onResume();onPause();onStop();onDestory();onRestar()
onCreate():在Activity创建时调用
onStart():在Activity创建或从后台回到前台时调用
onRestar():在Activity从后台回到前台时调用
onResume():在Activity从被覆盖或者从后台回到前台时调用
onPause():Activity被覆盖到下面或者锁屏时调用
onStop():退出当前Activity或者跳转到新Activity时被调用
onDestory():退出当前Activity时被调用,调用之后Activity就结束了
Activity 之间的跳转
Intent称为意图,不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。Intent分为显式意图和隐式意图
显式意图
Intent intent=new Intent(this , ShowActivity.class); //创建Intent对象,第一个参数表示当前Activity对象,
//第二个参数为要启动的Activity
startActivity(intent); //开启ShowActivity
隐式意图
Intent intent = new Intent();
//设置action动作,该动作需要与清单文件中设置的一样
intent.setAction("com.click.StarActivity");
startActivity(intent);
使用隐式意图需要在清单文件目标Activity中配置*<intent-filter>*,指定当前Activity能够响应的action和category
<intent-filter >
<action android:name="com.click.StarActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
数据传递
从Activity1中传递数据到Activity2
Intent intent = new Intent(this,Activity2.class); //创建Intent
intent.putExtra("name" , et_name.getText().toString().trim()); //将et_name中获取数据,并以字符串存到name这个key中
Activity2从Activity1中接受数据
Intent intent = getIntent(); //获得Intent对象
String name = intent.getStringExtra("name"); //获取Intent中的key:name中的数据,并存到新的字符串变量name中
数据回传
数据回传分三步:
1:在需要接收回传信息的页面中,进行Activity跳转的类需要改变,由startActivity(ntent)改为startActivityForResult(intent , 1) 1为请求码,用于验证从其他Activity传回来的数据是不是想要的
Intent intent=new Intent(this , ShowActivity.class);
startActivityForResult(intent ,1); //设置请求码为1,并通过intent传递数据
2:在需要回传数据的Actvity中获取需要接收回传信息Acticity的intent,并将要回传的数据存入该intent中,然后进行回传
Intent intent = getIntent(); //获取Intent
intent.putExtra("name" ,"111" ); //把后面的数据存入name这个key中
setResult(111,intent); //设置结果码为1,并通过获取到的Intent把数据传送回去
finish();
3.在接收回传数据的Activity重写回调函数
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
//第一个参数requestCode为请求码,第二个参数resultCode为结果码,第三个参数为数据
//判断是否匹配成功
//requestCoded的值与resultCode的值不需要相等
if(requestCoded == 1 && resultCode == 111) //判断得到的请求码是否与你设置的请求码一致,结果码亦同,两者必须匹配上才能确定接收到的回传信息是需要回传的信息
{
//取出回传得到的信息,并通过toast打印出来
String name=data.getStringExtra("name");
Toast.makeText(this,name,Toast.LENGTH_SHORT).show();
}
}
参考书籍:Android移动开发基础案例教程-黑马程序员
如有不对之处,欢迎指出