第一部分:知识储备
一、结构
Activity主要负责创建显示窗口,一个Activity通常就代表了一个单独的屏幕。 它是用户唯一可以看得到的东西,一个activity要经历激活状态、运行状态、暂停状态、停止状态和终止状态,通过栈来管理的。
二、activity的实现
创建时,都必须用extends关键字来继承Android中的android.app.Activity作为父类。
一般情况下,所有的Activity都应该实现自己的onCreate()方法进行初始化设置,大部分还应该实现onPause()方法来准备终止与用户的交互,至于其他方法,则可以在需要时实现,当实现这些方法的时候,需要注意的是,一定要覆盖父类中的对应方法。
在启动新的activity的时候,首先调用oncreat()方法,然后调用setContentView()方法,该方法的作用是根据activity_main.xml文件中的配置代码来设置activity的界面内容。该方法中所需的参数是R.layout.activity_main,其中R表示在创建项目时自动生成的R.java文件,该文件的代码不要手工修改。
另一个固定语句是:super.onCreat(savedInstanceState)的功能是执行父类的onCreat构造函数,其中的savedInstanceState是当前Activity的状态信息。
三、启动另一个Activity
一个activity可以启动另一个activity,在这里启动的activity被称为“宿主activity”,被启动的称为“随从activity”。
宿主activity既能启动同一个应用程序下的其他activity,也可以启动其他应用程序下的其他activity。一般来讲,activity之间通过intent来传递消息的,两个函数可以实现,startActivity()和startActivitForResult(),通过startActivity()方式启动activity时,随从activity在关闭时不会给宿主activity任何返回值;然而通过startActivitForResult()方式启动时,关闭会给宿主返回一个值。
四、举例说明
1、在activity中设置intent方法:
1 package com.example.ex03_09; 2 3 import android.support.v7.app.ActionBarActivity; 4 import android.os.Bundle; 5 import android.view.Menu; 6 import android.view.MenuItem; 7 8 import android.view.View; 9 import android.widget.Button;10 import android.content.Intent;11 12 public class EX03_09Activity extends ActionBarActivity {13 14 @Override15 protected void onCreate(Bundle savedInstanceState) {16 super.onCreate(savedInstanceState);17 setContentView(R.layout.activity_ex03_09);18 19 Button b1=(Button) findViewById(R.id.button1);20 b1.setOnClickListener(new Button.OnClickListener()21 {22 public void onClick(View v)23 {24 Intent intent=new Intent();25 intent.setClass(EX03_09Activity.this, EX03_09_1Activity.class);26 27 startActivity(intent);28 EX03_09Activity.this.finish();29 }30 });31 }32 33 @Override34 public boolean onCreateOptionsMenu(Menu menu) {35 // Inflate the menu; this adds items to the action bar if it is present.36 getMenuInflater().inflate(R.menu.ex03_09, menu);37 return true;38 }39 40 @Override41 public boolean onOptionsItemSelected(MenuItem item) {42 // Handle action bar item clicks here. The action bar will43 // automatically handle clicks on the Home/Up button, so long44 // as you specify a parent activity in AndroidManifest.xml.45 int id = item.getItemId();46 if (id == R.id.action_settings) {47 return true;48 }49 return super.onOptionsItemSelected(item);50 }51 }
2、修改相应的xml
110 11 16 17 25 26 "27 28
3、new-新建activity
1 package com.example.ex03_09; 2 3 import android.view.View; 4 import android.widget.Button; 5 import android.content.Intent; 6 7 import android.support.v7.app.ActionBarActivity; 8 import android.os.Bundle; 9 import android.view.Menu;10 import android.view.MenuItem;11 12 public class EX03_09_1Activity extends ActionBarActivity {13 14 @Override15 protected void onCreate(Bundle savedInstanceState) {16 super.onCreate(savedInstanceState);17 setContentView(R.layout.activity_ex03_09_1);18 19 Button b2=(Button) findViewById(R.id.button2);20 b2.setOnClickListener(new Button.OnClickListener()21 {22 public void onClick(View v)23 {24 Intent intent=new Intent();25 intent.setClass(EX03_09_1Activity.this, EX03_09Activity.class);26 27 startActivity(intent);28 EX03_09_1Activity.this.finish();29 }30 });31 }32 33 @Override34 public boolean onCreateOptionsMenu(Menu menu) {35 // Inflate the menu; this adds items to the action bar if it is present.36 getMenuInflater().inflate(R.menu.ex03_09_1, menu);37 return true;38 }39 40 @Override41 public boolean onOptionsItemSelected(MenuItem item) {42 // Handle action bar item clicks here. The action bar will43 // automatically handle clicks on the Home/Up button, so long44 // as you specify a parent activity in AndroidManifest.xml.45 int id = item.getItemId();46 if (id == R.id.action_settings) {47 return true;48 }49 return super.onOptionsItemSelected(item);50 }51 }
4、修改xml
111 12 17 18 26 27 28
5、效果呈现
点击后: