关于Activity
来源:互联网 发布:二手交易平台源码 编辑:程序博客网 时间:2024/05/16 17:53
Android 四大组件
- Activities –管理应用程序展示
- Services – 管理后台服务
- Broadcast receivers – 接收广播通知信息,并作出处理
- Content Provider – 管理数据共享,内容提供者
Activity 通过Intent进行通信,在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。
典型的动作类型有:MAIN(activity的门户)、VIEW、PICK、EDIT 等。
动作对应的数据则以URI 的形式进行表示。
intent 是一个有效的做某事的请求,intentfilter 则用于描述一个activity(或者IntentReceiver)能够操作哪些intent,IntentFilter 需要在AndroidManifest.xml 中定义。当向前导航时,activity 将会调用startActivity(Intent myIntent)方法。然后,系统会在所有安装的应用程序中定义的IntentFilter 中查找,找到最匹配myIntent 的Intent 对应的activity。新的activity 接收到myIntent 的通知后,开始运行。
AndroidManifest文件中含有如下过滤器的Activity组件为默认启动类当程序启动时系统自动调用它
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /></intent-filter>
启动新的Activity
<一>不传参数
startActivity(new Intent(MainActivity.this, NewActivity.class));
<二>
Intent intent = new Intent(MainActivity.this,NewActivity.class);Bundle bundle = new Bundle();bundle.putString("name", "tom");bundle.putInt("age", 4);intent.putExtras(bundle); startActivity(intent);
新Activity接收数据
Bundle bundle = this.getIntent().getExtras();String name = bundle.getString("name");int age = bundle.getInt("age");
若需在Activity中得到新打开Activity 关闭后返回的数据,需使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity 传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode,Intent data)方法:
@Override startActivityForResult (new Intent(MainActivity.this,NewActivity.class),1);//第二个参数为请求码,可以根据业务需求自己编号//第一个参数为请求码,即调用startActivityForResult()传递过去的值 第二个参数为结果码@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {String result = data.getExtras().getString(“result”));//得到新Activity 关闭后返回的数据 }
当新Activity关闭后,新Activity返回的数据通过Intent进行传递,android平台会调用前面Activity 的onActivityResult()方法,把存放了返回数据的Intent作为第三个输入参数传入,在onActivityResult()方法中使用第三个输入参数可以取出新Activity返回的数据。使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新Activity关闭前需要向前面的Activity返回数据需要使用系统提供的setResult(int resultCode, Intent data)方法实现:
Intent intent = new Intent();//数据是使用Intent返回intent.putExtra(“result”, “hello”);//把返回数据存入IntentNewActivity.this.setResult(RESULT_OK, intent);//设置返回数据NewActivity.this.finish();//关闭Activity
Activity生命周期:【重要数据写在OnPause(),最后一个安全生命周期方法】
android.app.Activity类:因为几乎所有的活动(activities)都是与用户交互的,所以Activity类关注创建窗口,可以用方法setContentView(View)将自己的UI放到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另外一个活动中。有两个方法几乎所有的Activity子类都实现:
onCreate(Bundle):
初始化活动(Activity),例如完成一些图形的绘制。最重要的是,在这个方法里通常将用布局资源(layout resource)调用setContentView(int)方法定义你的UI,和用findViewById(int)在你的UI中检索你需要编程地交互的小部件(widgets)。 setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后进行相关操作,操作会被包装成为一个意图,然后这个意图对应有相关的activity进行处理
。
onPause():
处理当离开活动时要做的事情。用户做的所有改变应该在这里提交(通常ContentProvider保存数据)。
@Override
在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。 例如,
public void onCreate(Bundle savedInstanceState){…….}
这种写法是正确的, 若写成public void oncreate(Bundle savedInstanceState){…….}
这样编译器会报如下 错误—The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method
以确保正确重写onCreate方法 若不加@Override,则编译器将不会检测出错误,会认为你新定义了一个方法oncreate。
- 关于activity
- 关于Activity
- 关于activity
- 关于Activity
- 关于activity的退出
- 关于 Activity 的跳转。
- 关于Activity的生命周期
- 关于activity的劫持
- 关于Activity的基础
- 关于Activity的onActivityResult
- 关于Activity生命周期执行:
- 关于activity/service/broadcast
- 关于Activity跳转
- 关于Android activity生命周期
- 关于Activity的记忆
- 关于Activity的生命周期
- 关于Activity的面试
- 关于Activity和Flag
- 异步任务AsyncTask
- /WEB-INF/views/login.jsp(2,61) Unable to read TLD "META-INF/c.tld" from JAR file "file:/D:/Program%
- 线程池剖析
- 判定200以内的数字的平方是否为回文数
- 手机号码段及归属地查询规则
- 关于Activity
- POJ 2488(DFS)
- (转)linux 屏幕亮度调整命令
- 工控机与西门子S7系列PLC数据交互组件(附测试样例记录文件)
- 启动系统联系人界面
- YTU 2899: D-险恶逃生 I
- Linux 下安装JDK
- 单例模式
- 如何通过平板电脑进行工控(工业控制)获取工位生产信息查看工况和修改参数配置