Activity是android四大组件之一,activity 可以看成是一个屏幕,用户可以在这里做一些操作。activity通常都是满屏的,但也可以小于屏幕而浮于其它窗口之上,比如把activity 的风格设置为 dialog

如何创建一个Activity

首先,我们需要为这个activity 创建一个界面(布局)

然后,我们需要新建一个类,这个类是 Activity 的子类。

接着,在这个类里 重写onCreate 方法,并且在该方法里加载布局文件(setContentView),初始化控件(findViewById).

最后,需要在androidmanifest.xml 里声明这个activity。

如果,你 想设置 该activity 为程序的入口,你需要为该activity 设置 intent-filter

  <!-- 入口申明 -->
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

启动一个新的activity 我们可以使用 startActivity 这个方法

         Intent intent = new Intent(this,SecondActivity.class);
intent.putExtra("type", type);
startActivity(intent);

以上代码表示,我要打开一个 SecondActivity,同时 给它传递一个数据过去。

有时候,我们 需要打开其他应用程序,这个时候,使用上面这个方式 就做不到了。

我们需要采用隐式Intnet的方式来打开

 Intent intent = new Intent(Intent.ACTION_CALL);
Uri uri = Uri.parse("tel:110");
intent.setData(uri);
startActivity(intent);

以上代码表示的是:拨打110。

注意:拨号需要拨号权限

<uses-permission android:name="android.permission.CALL_PHONE" />

如果我们的应用程序,运行被其他应用程序调用,我们需要 在 androidmanifest.xml 找到可以被唤起的activity,在这个节点 里定义一个intent-filter,设置我们自己的action

  <intent-filter >
<action android:name="com.zy.android.firstandroid"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

设置好了之后,我们在其他应用程序里 就可以通过以下的方式 访问这个 activity

 Intent intent = new Intent("com.zy.android.firstandroid");
startActivity(intent);

有时候,我们不仅仅是启动一个新activity,我们可能需要 接收新activity 返回来的数据,如果用startActivity 这种方式,我们就没法获取返回的数据

android为我们提供了另一种方式 可以 满足这个需求

使用 startActivityForResult 替代 startActivity

同时,我们需要在 接收数据的这个activity里 重写 onActivityResult 这个回调方法。当新activity 返回数据的时候,我们就可以在这个方法里获取到数据

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
//requestCode 请求码
//resultCode 结果码
//data 新activity返回的数据存储在这里,可以取出来使用
}

activity的生命周期 不在这个地方给大家做介绍了。

接下来 我们介绍下 保存activity的状态

我们知道,当activity的状态处于 onPause,onStop,的时候 有可能会被系统kill掉,如果被系统kill掉之后,用户返回回来,看到的 是一个全新的界面,可是用户并不知道 系统kill掉了之前的activity,用户就会觉得很奇怪,咦,我刚才的操作呢?哪去了?哪去 了?

如果这样的事情真的发生,这将会是一个非常不友好的应用!

为了避免出现这个的情况,我们需要在 系统kill掉activity之前 把一些数据保存下来。

activity为我们提供了一个回调方法 叫 onSaveInstanceState()

我们可以重写这个方法,然后在该方法里 做数据保存操作,保存到 Bundle里去

 @Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putString("name", "用户操作数据");
}

保存之后,我们从什么地方取呢? 我们可以在2个地方取到这些数据

仔细的园友 可定会发现这样一个问题,onCreate 这个方法里有个参数,可以为什么我们一直没使用过它? 其实 这个参数 就是 我们刚才保存的数据,到系统kill掉之后,我们如果做了数据保存,那么系统 在下次打开这个activity 的时候 会把这个数据一起给我们带进来

so,我们可以在 onCreate 这个方法里  获取数据

 @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.result_layout);
//获取 系统kill之前保存的数据
if(savedInstanceState!=null){
String name = savedInstanceState.getString("name");
} tv_info = (TextView) findViewById(R.id.tv_info);
btn_email = (Button) findViewById(R.id.btn_email);
btn_phone = (Button) findViewById(R.id.btn_phone); btn_email.setOnClickListener(click);
btn_phone.setOnClickListener(click); }

我们还可以重写 onRestoreInstanceState() 这个回调方法,在这个方法里同样也可以获取到 系统killactivity之前保存的数据

跟我学android-Activity介绍的更多相关文章

  1. android Activity介绍

    一般情况下,Android程序的流程都运行在activity中,activity具有自己的生命周期,由系统来控制.可以使用onSaveInstanceState()和onRestoreInstance ...

  2. Android开发学习之路-该怎么学Android(Service和Activity通信为例)

    在大部分地方,比如书本或者学校和培训机构,教学Android的方式都基本类似,就是告诉先上原理方法,然后对着代码讲一下. 但是,这往往不是一个很好的方法,为什么? ① 学生要掌握这个方法的用途,只能通 ...

  3. 学Android开发 这19个开发工具助你顺风顺水

    学Android开发 这19个开发工具助你顺风顺水 要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,下面大连Android开发培训小 ...

  4. 一步一步学android控件(之六) —— MultiAutoCompleteTextView

    今天学习的控件是MultiAutoCompleteTextView . 提到MultiAutoCompleteTextView 我们就自然而然地想到AutoCompleteTextView ,就想知道 ...

  5. android Animation介绍

    Animation介绍: 在Android SDK介绍了2种Animation模式: 1. Tween Animation:间动画,通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果,即 ...

  6. Android Activity和Fragment的转场动画

    Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...

  7. android Activity生命周期(设备旋转、数据恢复等)与启动模式

    1.Activity生命周期     接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...

  8. android AsyncTask介绍(转)

    android AsyncTask介绍 AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接 ...

  9. Android monkey介绍

    Android monkey介绍 原文地址 1 简略 monkey是android下自动化测试比较重要的的一个工具,该工具可以运行在host端或者设备(模拟器或真实设备).它会向系统发送随机事件流(即 ...

  10. android activity 跳转传值问题研究

    intent = new Intent(); intent.setClass(LoginActivity.this, RegActivity.class); startActivity(intent) ...

随机推荐

  1. linux系统开机过程描述

    本文描述linux系统开机过程,属于个人理解范畴,如果文中表述有误请大家批评指正! 计算机开机之后,首先要加载BIOS(基本输入输出系统)信息,BIOS包含了很多重要的信息,包括CPU信息,设备启动顺 ...

  2. 【ZOJ】3430 Detect the Virus

    动态建树MLE.模仿别人的代码模板各种原因wa后,终于AC. #include <iostream> #include <cstdio> #include <cstrin ...

  3. 【Mongous】

    amark/mongous Mongous - 一个轻量级的nodejs mongodb驱动 mongous,是我不够懂你吗?关于mongous不支持objectId查询 mongous 不需要 _i ...

  4. 3A. Shortest path of the king

    给你一个的棋盘, 问:从一个坐标到达另一个坐标需要多少步? 每次移动可以是八个方向.   #include <iostream> #include <cmath> #inclu ...

  5. Delphi 总结操作Excel

    定义变量 Excelid:variant; 1.创建OLE对象 try Excelid:=CreateOleObject( 'Excel.Application' ); except on Excep ...

  6. 阿里云ECS试用

    公司在推一个大项目,感觉阿里云挺好用的,自己搞了台小机器平时可以跑着玩,而且可以做个跳板机,平时学校里的收费网直接用跳板机就可以访问了,直接写个脚本在自己机器上跑一下: #!/usr/bin/expe ...

  7. firefox HackBar组件模拟请求POST请求

    组件下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/hackbar/

  8. 最小生成树——[HAOI2006]聪明的猴子

    题目:[HAOI2006]聪明的猴子 描述: [题目描述] 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着, 猴子不会游泳,但跳 ...

  9. Java父类子类的对象初始化过程

    摘要 Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况. 1. 基本初始化过程: 对于一个简单类的初始化过程是: static 修饰的模块(static变量和 ...

  10. Hive 创建和生成Rcfile 和SequenceFile格式的表

    rcfile格式表需要从原始的textfile 文件格式表导出数据并导入到新建好的rcfile格式表里 转: HIVE RCFile高效存储结构 创建rcfile 格式的表: CREATE TABLE ...