android学习笔记(一)activity的基本用法和创建,bundle如何传递数据,intent的用法

一,activity

activity在android中相当于php中的一个html页面,只要处于这个页面,就代表这个activity处于活动状态,用户在这个界面上所做的任何操作都是针对这个activity来说的,activity从oncreate开始后存在,直到调用ondestroy后结束其生命周期,当Activity的处于后台不可操作活出与前台但无法进行互动时,此时的Activity处于暂停状态,但依然在程序中存在,并没有被释放掉,当Activity处于前台和用户进行交互时,此时Activity处于激活态,即当前的活动页面,当Activity被另一个页面完全覆盖后,就处于停止状态,此时通常系统会自动调用函数将其杀死,这就是Activity的三种基本状态,下面来说一下怎么创建Activity

对于android来说创建一个activity有两种方式,

第一种是手工添加,需要完成3个步骤,

1.首先是创建一个类,类继承自android.app.activity,如下图,需要填写的为name也就是类名,和superclass这一项,这一项填写android.app.activity即可,其他默认即可


2.在res/Layout下创建一个xml文件,文件名称最好与创建的类名关联,方便以后修改,这里取名叫Activity_Thrid


之后需要对其进行修改与之前的新建Activity关联上

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.helloandroid.ThridActivity" >

3.在入口程序中注册


在三个步骤完成后,也就代表一个Activity注册完成了。

第二种是自动添加:

选择New-other在弹出的对话框中选择AndroidActivity后,就会有系统自动完成所有内容的添加

二.intent

intent 的中文翻译为意图,也就是打算干什么的意思,在Android中的实际运用也就是打算干什么,intent分为隐式意图和显式意图,区分这两个很容易,打个比方说,怪盗kid去偷美术品的时候都会寄一张预告函,告诉主人,我将于XX点于XX地点偷取XX,这个就是显式意图,普通小偷偷东西并不会事先通知你任何事,而都是在私下里进行的,这个就是隐式意图,两者的区别就在于会不会事先设置好应该传递给那些组件,下面就来介绍一下显式意图和隐式意图两种不同方式的传递过程

1.显式意图,显式意图会实现通过设定好传递的地点

Intent intent=new Intent(MainActivity.this, SecondActivity.class);//定义意图

或者 Intent intent=new Intent()

intent.setClass(MainActivity.this, SecondActivity.class);

或者

Intent intent=new Intent()
ComponentName com=new ComponentName(MainActivity.this, SecondActivity.class);
intent.setComponent(com);

三种方式来定义显式意图,可以很明显的看出,每种方式都有明显的指出起始Activity和需要送达的activity,这样明确指出需要送达地点的意图就是显式意图


2.隐式意图,就是指不指出需要送达地点的意图,那么android是怎么来传输这种意图了,一般情况都是根据xml中设置的action,data和Category来自发决定要往哪里发送

也就是需要在AndroidManifest.xml里面事先设置后activity的action,data以及Category,具体的设置可以参考下面的代码:

    <activity
            android:name=".ThridActivity"
            android:label="Thrid Activity label" >
              <intent-filter>  
               <!-- 自定义的动作 -->  
               <action android:name="com.example.helloandroid.ThridActivity" />  
               <!-- 附加信息 -->  
               <category android:name="android.intent.category.DEFAULT" />  
           </intent-filter>  
        </activity>

注册后,就需要对意图的action和category进行设置,如下代码,这样android就会在运行时自动根据action和category进行匹配,如果匹配结果只有一项则直接开始运行,如有多项会打开一个选择列供用户进行筛选,

                     Intent intent=new Intent();//定义意图
       intent.setAction("com.example.helloandroid.ThridActivity");
       intent.addCategory("android.intent.category.DEFAULT");  

3.bundle的使用

bundle的作用在android中是用来传递数据的,通常的载体为意图,也就是说bundle可以承载在意图中将数值传到目标组件处使用

                        Bundle bundle = new Bundle();
bundle.putString("name", "thridbutton");
intent.putExtras(bundle);

如上代码,向bundle中压入数据后,将bundle放入意图中

之后再目标组件处提取bundle中的数据即可

           Bundle bundle=this.getIntent().getExtras();//获取bundle数据
String str=bundle.getString("name");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章