一、Activity定义
1、Activity, 直译为活动, 它是Android定义的四大应用组件之一,也是最重要用得最多的.
2、Activity用来提供一个能让用户操作并与只交互的界面
3、一个应用界面可以包含多个Activity
二、生命周期以及方法
1、在Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期,,由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态
2、Activity中的方法以及使用方法:
1)方法:
1、startActivity(Intent intent): 一般启动
2、startActivityForResult(int reqCode, Intent intent): 带回调启动
3、onActivityResult(int reqCode, int resultCode, Intent data): 回调方法
4、setResult(int resultCode, Intent data): 设置要返回的结果
5、finish(): 结束当前
6、Activity getIntent(): 得到启动Activity的意图
Activity的使用需要在Manifest文件中添加相应的<Activity>,并设置其属性和intent-filter。
2)用法:
1、定义
定义一个类extends Activity,并重写生命周期方法
在功能清单文件中使用<activity>注册
2、启动
一般 startActivity(Intent intent)
带回调启动:startActivityForResult(Intent intent,int requestCode)
重写onActivityResult(int requestCode,int resultCode,Intent data)
3、结束
一般:finish()
带结果的:setResult(int resultCode,Intent data)
3、其生命周期函数有:
onCreate()
onStart()
onResume()
onPause()
onRestart()
onStop()
onDestory()
4、Activity的四种状态
运行状态: 可见也可操作
暂停状态: 可见但不可操作
停止状态: 不可见,但对象存在
死亡状态: 对象不存在
二、Intent
1、Intent的理解
1)Intent直意为意图,也就是你想要做什么或想要去哪
2)Intent是Activity, Service和BroadcastReceiver这三个应用组件之间进行通信的信使
3)Intent是可以携带数据的
4)要在Activity中启动另一个Actvity, 就必须使用Intent对象
注意:Intent不是四大组件之一
2、Intent分类
1)显示意图:明确指定目标组件的意图
创建对象:Intent(Context context, Class clazz)
何时使用 : 当操作当前自己应用的组件时使用
2)隐式意图:没有明确指定目标组件的意图
创建对象:Intent(String action)//于Acityity中<intent-filter>的action匹配
何时使用 : 当操作其它应用的组件时使用
3)携带数据:
额外数据:putExtra(String key,Xxx value); 内部用map容器保存
有特定前缀:setData(Uri data)//setData(Uri.parse("tel:"+内容))
4)读取数据
额外数据:Xxx getXxxExtra(String key)
有特定前缀:Uri getData()
3、Intent中的方法
1)Intent(Context packageContext, Class<?> cls) : 用于创建显示意图对象
2)Intent(String action): 用于创建隐式意图对象
3)putExtra(String name, Xxx value): 保存额外数据
4)Xxx getXxxExtra(String name): 获取额外数据
5)setData(Uri data): 设置有特定格式的uri数据
三、IntentFilter
1、IntentFilter的理解
1)在配置Activity时, 可以为Activity指定一个IntentFilter的配置
2)如果你的Activity希望其它应用能访问到, 需要配置<intent-filter>
3)如果你想启动其它应用的界面你必须用隐式intent, 且目标界面Activty配置了<intent-filter>
4)它的作用类似于web中的为Servlet配置的<url-pattern>
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter>//配置IntentFilter <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity//配置Activity android:name=".SecondActivity" android:label="@string/title_activity_second" > </activity> </application>
Activity实例(通过界面一启动界面二)
public class MainActivity extends Activity implements OnClickListener { //定义视图对象 private EditText edtext; private Button btn1; private Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化视图 edtext = (EditText)findViewById(R.id.edtext); btn1 = (Button)findViewById(R.id.btn1); btn2 = (Button)findViewById(R.id.btn2); //设置监听 btn1.setOnClickListener(this); btn2.setOnClickListener(this); } @Override public void onClick(View v) {//v就是发生事件的视图对象(操作) if(v==btn1){ //得到intent对象 Intent intent = new Intent(this,SecondActivity.class); //同过intent携带额外数据 String message = edtext.getText().toString(); intent.putExtra("MESSAGE",message); //启动activity startActivity(intent); }else if(v==btn2){ //得到intent对象(显示) Intent intent = new Intent(this,SecondActivity.class); //通过intent携带额外数据 String message = edtext.getText().toString(); intent.putExtra("MESSAGE",message); //带回调启动Activity int requestCode = 1;//请求码 startActivityForResult(intent, requestCode); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //判断Code if(requestCode==1 && resultCode==2){ //从data中取出数据 String result = data.getStringExtra("RESULT"); //显示数据 edtext.setText(result); } } }
public class SecondActivity extends Activity { //定义视图对象 private EditText second_edtext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); //初始化视图对象 second_edtext=(EditText)findViewById(R.id.second_edtext); //获取意图 Intent intent = getIntent(); //获取intent携带的参数 String message = intent.getStringExtra("MESSAGE"); second_edtext.setText(message) ; } public void back1(View v){ //关闭当前界面 finish(); } public void back2(View v){ //保存一个结果 int resultCode = 2;//结果码 //准备一个额外数据的intent对象 Intent data = new Intent(); String result = second_edtext.getText().toString(); data.putExtra("RESULT", result); //设置结果 setResult(resultCode,data); //关闭当前界面 finish(); } }
程序效果(一般返回)
带参返回