android中activuty的简单总结

来源:互联网 发布:微信公众号源码下载 编辑:程序博客网 时间:2021/05/13 03:56




android中activity的使用

  1. activity的作用

    1. activity作为android四大组件中的一个,在我们开发的每个安卓应用中都会用到,是最常用的组件之一。一个activity就是我们平常看到的一个页面,一个安卓应用可以有很多个页面,其中每个页面就是一个activity。

  2. activity的基本用法

    1. 我们创建一个android应用之后,开发工具会自动为我们创建一个activity。activity其实就是一个继承了ActionBarActivity类的java类,一般默认的类名为MainActivity,当然也可以修改。我们新创建出来的activity一般结构如下
      package com.zl.demo;import android.support.v7.app.ActionBarActivity;import android.support.v7.app.ActionBar;import android.support.v4.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.os.Build;public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}
      这是最简单的一个activity实例。我们可以看到一个类继承了ActionBarActivity 并重写了onCreate方法。这是固定写法,并不需要我们手动去写,在项目创建出来之后我们就存在,我们可以删掉生成的多余的代码。setContentView(R.layout.activity_main);方法设置了这个activity对应的布局文件,形参为布局文件的id。布局文件是一个xml文件,可以方便我们编写页面。示例代码如下
      <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/container"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.zl.demo.MainActivity"    tools:ignore="MergeRootFrame" >    <EditText        android:id="@+id/editText1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10" >        <requestFocus />    </EditText></FrameLayout>
      其中EditText是一个文本框,它的id为editText1,我们要在java中获取文本框对象,可以在onCreate()方法中使用activity继承自父类的方法fandViewById(R.id.editText1),来获取一个Object类型的对象,强转为相应组件的类型。并通过组件的getxxx()、setxxx() 来设置和获取组件的信息。至于为什么在onCreate方法中调用,下面会给出解释。为什么是R.id.editText1,当我们创建一个android项目之后,开发工具会自动为我们创建一个类名为R的类,这个类又有很多内部类,其中全是静态参数,id便是其中的一个内部类。这个类不需要我们程序员手动的来修改,当我们在布局文件中添加或修改一个组件的id时开发工具会自动为我们在R类中添加或修改对应的静态变量的名称并生成一个唯一的id值。

  3. activity的生命周期

    1. 上面讲了在onCreate方法中获取组件对象,其实并部一定在onCreate中获取,只是因为onCreate方法是这个activity的入口。activity在父类中继承了很多方法,一般我们需要重写的方法除了onCreat之外还有这几个
          @Override    protected void onStart() {    super.onStart();    }        @Override    protected void onResume() {    super.onResume();    }        @Override    protected void onPause() {    super.onPause();    }      @Override    protected void onStop() {    super.onStop();    }        @Override    protected void onDestroy() {    super.onDestroy();    }
      当页面创建的时候最先执行onCreate()方法,然后执行onStart()方法,再执行onResume()方法。当页面失去焦点的时候会执行onPause()方法。当activity暂停时执行onstope()方法,退出时执行onDestroy()方法销毁。当页面从失去焦点的状态重新变为前台页面的时候会再次调用onPause()方法。当页面从暂停状态再次开始的时候会进入onResume()方法然后依次往下执行。

    2. 一般情况下onCreate用来初始化页面,onStop方法在应用暂停时保存暂停时的状态,onStart用于恢复暂停前的状态。而onPause在页面失去焦点时保存状态,onPause在页面重新获得焦点的时候执行来恢复程序。onDestroy在程序退出的时候保存信息并解除资源占用。

  4. activity的页面跳转

    1. 一个应用程序一般都会有好几个页面,而页面间的相互跳转是通过一个叫做Intent的对象配合activity继承自父类的方法startActivity(intents);来实现的。

    2. 我们可以为一个应用程序写好几个activity,那么哪个activity才是程序的入口呢?换句话说当我们点击程序图标的时候会最先进入哪个界面呢?

当我们创建处一个activity的时候会在程序的清单文件中做配置,将这个activity注册到程序中。打开AndroidManifest.xml文件我们看到的结果如下
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.zl.demo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="19" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.zl.demo.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity            android:name="com.zl.demo.SecendActivity"            android:label="@string/title_activity_secend" >        </activity>    </application></manifest>
我们看到了两个activity标签,第一个标签中有一段intent-filter的配置,通过这个意图过滤器会为该activity创建一个图标,如果在两个activity上配置该意图过滤器,那么该程序将会有两个桌面图标。注册完activity后我们就应该进行页面跳转了,页面跳转时会用到intent对象,该对象有两种用法,一种显式意图,一种隐式意图。本文只对显式意图做出说明,以后会再专门对意图进行说明。先写一个简单例子从MainActivity跳转到SecendActivity.<pre class="java" name="code">    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Intent intents = new Intent(this, SecendActivity.class);        startActivity(intents);    }
创建一个意图在构造方法的形参中分别传入Context对象和要跳转到的activity的class。然后通过父类的startActivity(intents);即可跳转。

3 0