Android四大组件之一:Activity总结(下)
2016-11-14 00:49
716 查看
六.多Activity的跳转及值传递
一般启动Activity: startActivity(intent)一般结束Activity: finish()
使用Intent进行数据传递
a. intent携带数据 :intent.putExtra(name, value)
b. 从intent中取数据:intent.getXxExtra(name)
带回调的启动:
a. startActivityForResult(reqCode, intent);
b. 重写onActivityResult(int reqCode, int resultCode, Intent data)
带结果的结束:
setResult(resultCode,intent);
补充:Intent能携带的数据类型?
a. 基本类型及其数组
b. 字符串及其数组
c. 可序列化类型
d. 可打包类型(在Service部分会接触到)
下面:通过一个小例子来深入了解多anctivity的跳转及值传递
第一个activity:
package com.atguigu.l02_activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements OnClickListener { //视图对象的声明 private EditText et_main_content; private Button btn_main_start1; private Button btn_main_start2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //视图对象的初始化 et_main_content = (EditText) findViewById(R.id.et_main_content); btn_main_start1 = (Button) findViewById(R.id.btn_main_start1); btn_main_start2 = (Button) findViewById(R.id.btn_main_start2); //方式二:给两个Button设置点击事件的监听 btn_main_start1.setOnClickListener(this); btn_main_start2.setOnClickListener(this); } @Override public void onClick(View v) {//v:即为触发此点击事件的对象,即为两个button //创建一个Intent Intent intent = new Intent(this, SecondActivity.class); //获取EditText中的内容 String content = et_main_content.getText().toString(); //携带数据 intent.putExtra("content", content); if(v == btn_main_start1){ //一般启动 //启动一个新的Activity startActivity(intent); }else if(v == btn_main_start2){ //带回调的启动 int requestCode = 1; //启动一个新的Activity startActivityForResult(intent, requestCode); } } //当从SecondActivity返回时的回调方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == 1 && resultCode == RESULT_OK){ String result = data.getStringExtra("result"); et_main_content.setText(result); } } }
SecondActivity:
package com.atguigu.l02_activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements OnClickListener { //视图对象的声明 private EditText et_main_content; private Button btn_main_start1; private Button btn_main_start2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //视图对象的初始化 et_main_content = (EditText) findViewById(R.id.et_main_content); btn_main_start1 = (Button) findViewById(R.id.btn_main_start1); btn_main_start2 = (Button) findViewById(R.id.btn_main_start2); //方式二:给两个Button设置点击事件的监听 btn_main_start1.setOnClickListener(this); btn_main_start2.setOnClickListener(this); } @Override public void onClick(View v) {//v:即为触发此点击事件的对象,即为两个button //创建一个Intent Intent intent = new Intent(this, SecondActivity.class); //获取EditText中的内容 String content = et_main_content.getText().toString(); //携带数据 intent.putExtra("content", content); if(v == btn_main_start1){ //一般启动 //启动一个新的Activity startActivity(intent); }else if(v == btn_main_start2){ //带回调的启动 int requestCode = 1; //启动一个新的Activity startActivityForResult(intent, requestCode); } } //当从SecondActivity返回时的回调方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == 1 && resultCode == RESULT_OK){ String result = data.getStringExtra("result"); et_main_content.setText(result); } } }
完整源码已上传到我的资源里:~
Activity的好兄弟:Intent和IntentFilter
讲到Activity,又不得不提Intent了~Intent
1. 定义
Three of the core components of an application activities, services, and broadcast receivers are activated through messages, called intents.The intent itself, an Intent object, is a passive data structure holding an abstract description of an operation to be performed.
组件之间进行交互的信使
2. 结构
componentName、action、extras、data、category、flags
3.分类
显式意图:只能访问本应用中指定的组件
Intent(Context context,Class clazz)
隐式意图:可以跨应用访问其他应用的组件
Intent(String action)
3.作用:
①指明要访问的新的组件
②可以携带数据:
写入:
putExtra(String key,Xxx xxx)
setData(Uri uri)
读取:
Xxx getXxxExtra(String key)
getData();
4.理解:intent类似于web中的httpRequest
IntentFilter
1.定义
To inform the system which implicit intents they can handle, activities, services, and broadcast receivers can have one or more intent filters.
用来与隐式意图匹配的一个匹配规则对象
2.理解
IntentFilter类似于web中的为Servlet配置的uri-patten
注意!!!
Intent:翻译为意图,
是Activity\Service\BroadcastRecevier三者之间进行通信的信使。
不是!四大组件之一
相关文章推荐
- android四大组件(总结)activity、service、content provider、broadcast receiver
- Android开发总结笔记 四大组件之Activity(下) 1-2-3
- Android个人每天总结.doc(day06 多线程&Handler类&四大组件之:Activity)
- Android开发总结笔记 四大组件之Activity(上) 1-2-1
- Android 基础知识总结---四大组件之一Activity(一)
- android四大组件之activity知识点最强总结
- Android四大组件之一-----Activity总结
- Android四大组件之Activity总结
- Android四大组件之一:Activity总结(上)
- Android 四大组件之Activity 基础总结(1)
- Android学习笔记(1)————Android四大组件之一(Activity)
- 01 Android应用的构成 四大组件 Activity, Intent Receiver , Service , Content Provider
- android 四大组件之 Activity
- android四大组件之一Activity生命周期的理解
- android四大组件之Activity
- Android心得2.4--四大组件之一--Activity
- Android学习笔记38:Android四大组件之Activity
- Android四大组件之Activity(一)
- 【译】Android四大组件之Activity
- android四大组件之Activity以及常见的view处理