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移动开发基础案例教程-黑马程序员
如有不对之处,欢迎指出