Intent与Activity之间的传递
来源:互联网 发布:淘宝店如何复制到微店 编辑:程序博客网 时间:2024/05/23 17:17
1).活动:四大应用组件之一
2).作用:提供能让用户操作并与之交互的界面
3).组件的特点:
1,它的类必须实现特定的接口或继承特定类
2,需要在配置文件中配置其全类名
3,他的对象不是通过new出来的而是系统自动创建的
4,他的对象具有一定的生命周期,他的类中有对应的生命周期回调方法
4).那些地方用到反射(Android):
a.配置文本中配置全类名
b.布局文件中
c.显示意图Intent(Context context,Class c)
2.Intent的理解:
1).意图:信使(Activity,Service,BroadcastReceiver三个组件间通信的信使);
2).分类:
a.显示:操作当前应用自己的组件
b.隐士:操作其他应用自己的组件
3.Intent的使用:
1).创建:
a.显示:Intent(Context context, Class activityClass)
b.隐士:Intent(String action)//与Activity与<intent-filter>的action匹配
2).携带数据
a.额外:putExtra(String key,Xxx value)内部用map容器保存
b.有特定前缀:setData(Uri data)//tel:1234,smsto:1234
3).读取数据
a.额外:Xxx getXxxExtra(String key)
b.有特定前缀:Uri getData()
4.Activity的使用:
1).定义:
a.定义一个类extends Activity,并重写生命周期方法
b.在功能清单文件中使用<activity>注册
2).启动
a.一般启动:startActivity(Intent)
b.带回调的启动:startActivityForResoult(Intent intent intrequestCode),重写:onActivityResult(int requestCode,int resultCode, Intent data)
3).结束
a.一般:finish();
b.带结果的:setResult(int resultCode ,Intent data)
5.Activity的生命周期
1).Activity界面的状态
a.运行状态:可见也可操作
b.暂停状态:可见但不可操作
c.停止状态:不可见但对象存在
d.死亡状态: 对象不存在
6.具体实例:
Activity1:
linnerlayout:
1 输入框EditText
没输入数据之前有灰色的提示;
2 button1 一般启动
3 button2 带回调的启动
实现Activity的功能
1.定义所有要操作的视图对象并初始化
2.给视图设置监听
3.在回调方法中实现逻辑
Activity2:
linnerlayout:
1 输入框EditText
2 button 一般返回
3 button 带结果的启动
实现一般启动
1,定义好第二个界面
1,布局
2,定义Activity
3,配置
4,重写onCreate方法并加载布局
2,启动界面2
1firstActivity:
1,创建Intent对象(显式)
2, 通过Intent携带额外数据
3,启动Activity
SecondActivity:
4,得到Intent对象
5,通过INTENT对象读取额外数据
6,显示到EdiText
实现一般返回:
SecondActivity:
1,在显示第二个页面的时候,第一个页面其实还在只是被覆盖掉而已
2,设置监听,关闭当前页面;在布局设置监听Activity里面重写方法,finish()当前页面;
实现带回调的启动:
1,与一般启动一样,不同之处在于startActivityForResult();
1,设置一个请求码
2,要用到回调方法onActivityResult(),并重写这个方法;
1,先判断
1,得到结果
2,显示结果
实现带结果的返回:
1,在布局里设置监听,讲监听方法写出来
2,从文本编辑框中保存数据
1,setResult((int)resultCode,(intent)data);
2, 设置一个结果码
3,new一个Intent对象作为结果的载体
4,得到数据
5,传送数据
3,关闭当前界面
FirstActivity:
@Override
public void onClick(View v) {
if(v == bt_main_01){
// Toast.makeText(this,"一般启动",0).show();
// 1,创建Intent对象(显式)
Intent intent = newIntent(this,SecondActivity.class);
// 2, 通过Intent携带额外数据
String message = et_main.getText().toString();
intent.putExtra("MESSAGE",message);
// 3,启动Activity
startActivity(intent);
}else if(v == bt_main_02) {
// Toast.makeText(this,"带回调的启动",0).show();
// 1,创建Intent对象(显式)
Intent intent = newIntent(this,SecondActivity.class);
// 2, 通过Intent携带额外数据
String message = et_main.getText().toString();
intent.putExtra("MESSAGE",message);
int requestCode = 2;
// 3,启动Activity,带回调的启动
startActivityForResult(intent,requestCode);
}
}
@Override
protected void onActivityResult(intrequestCode, int resultCode, Intent data) {
//判断
if(requestCode== 2 && resultCode == 3){
//取出数据
String result = data.getStringExtra("RESULT");
//显示出来
et_main.setText(result);
}
}
SecondActivity:
// 4,得到Intent对象
Intent intent =getIntent();
// 5,通过INTENT对象读取额外数据
String message =intent.getStringExtra("MESSAGE");
// 6,显示到EdiText
et_second.setText(message);
}
public void back1(View v){ //有没有参数是不一样的,如果没有参数的话会半崩溃
finish();
}
public void back2(View v){
//保存结果
int resultCode =3;
Intent data = new Intent();
String result =et_second.getText().toString();
data.putExtra("RESULT",result);
setResult(resultCode , data);
finish();
}
- Intent与Activity之间的传递
- Activity之间的数据传递: Intent
- activity之间传递 intent 类型的参数
- 使用 Intent 启动 Activity和Activity之间的数据传递
- Activity之间传递消息(Intent)
- 使用Intent在Activity与Fragment之间传递数据中存在的返回键错乱问题
- 利用Intent在不同的activity之间传递数据
- 使用Intent实现activity之间的数据传递
- Android Intent意图用于Activity之间的数据传递
- Activity之间用Intent传递数据的方式
- activity 之间信息的传递 Intent 回调参数startActivityForResult
- android中activity之间数据通过Intent的传递
- Intent 意图 用于Activity之间的数据传递
- Intent意图 用于Activity之间的数据传递
- Android 使用intent.putExtra实现Activity之间的参数传递
- Android 实例:在Activity 之间传递数据的intent
- Android之Activity之间的数据传递-intent-bundle
- Activity之间利用Intent进行数据的传递
- 欢迎使用CSDN-markdown编辑器
- 在PhpStorm中管理码云代码仓库的方法
- Corporative Network UVA
- 一步步完成Maven+Spring+Dubbo+Zookeeper的整合示例
- 在Linux里安装、启动nginx
- Intent与Activity之间的传递
- 感知机算法(SVM简化版)
- Oracle 创建表空间
- 虚拟机下安装linux
- angularjs--Controller 'ngModel', required by directive 'ngChange', can't be found!错误
- B
- hdu1016.Prime Ring Problem
- 美的地产竞得石家庄50亩地块 美的布局开始
- React.PropTypes