7th-Activity基础
第一部分:知识储备
一、结构
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 @Override 15 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 @Override 34 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 @Override 41 public boolean onOptionsItemSelected(MenuItem item) { 42 // Handle action bar item clicks here. The action bar will 43 // automatically handle clicks on the Home/Up button, so long 44 // 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
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context="com.example.ex03_09.EX03_09Activity" > 10 11 <TextView 12 android:id="@+id/textView1" 13 android:layout_width="fill_parent" 14 android:layout_height="wrap_content" 15 android:text="@string/act1" /> 16 17 <Button 18 android:id="@+id/button1" 19 android:layout_width="wrap_content" 20 android:layout_height="wrap_content" 21 android:layout_alignLeft="@+id/textView1" 22 android:layout_below="@+id/textView1" 23 android:layout_marginTop="26dp" 24 android:text="Go to activity2" /> 25 26 " 27 28 </RelativeLayout>
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 @Override 15 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 @Override 34 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 @Override 41 public boolean onOptionsItemSelected(MenuItem item) { 42 // Handle action bar item clicks here. The action bar will 43 // automatically handle clicks on the Home/Up button, so long 44 // 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
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context=".EX03_09Activity" 10 tools:ignore="HardcodedText" > 11 12 <TextView 13 android:id="@+id/textView1" 14 android:layout_width="fill_parent" 15 android:layout_height="wrap_content" 16 android:text="@string/act2" /> 17 18 <Button 19 android:id="@+id/button2" 20 android:layout_width="wrap_content" 21 android:layout_height="wrap_content" 22 android:layout_alignLeft="@+id/textView1" 23 android:layout_below="@+id/textView1" 24 android:layout_marginTop="26dp" 25 android:text="Go to activity1" /> 26 27 28 </RelativeLayout>
5、效果呈现
点击后: