activity的基本介绍(转)
来源:互联网 发布:武汉黄陂公安局网络 编辑:程序博客网 时间:2024/06/05 09:13
Activity是应用程序的入口。负责创建才窗口(setContextView(View)),和用户交互等。 首先定义一个类继承自android.app.Activity,在AndroidManifest.xml文件的application标签里声明一个activity即可。 一般一个程序可能会有多个Activity,需要指定程序运行时首先加载的Activity,在activity标签内部需要定义action 和category 。首先运行这个Activity。 一个Activity例子。设置ContentView,获取视图上的按钮,添加事件。 AndroidManifest配置。 AndroidManifest中的通常设置: Java常用方法 Java其他方法 DisplayMetrics displayMetrics = new DisplayMetrics(); display.getMetrics(displayMetrics); display.getWidth()等方法 displayMetrics.densityDpi等方法 Activity有7个生命周期。Activity程序入口为方法onCreate或onStart。一些初始化的操作需要在这两个方法中进行,例如设置layout,初始化控件,添加事件监听等。 每次启动Activity都是从OnCreare开始,接着onStart,onResume。 按Back键就结束程序:onPause,onStop,onDestroy; 按home键切换程序:onPause,onStop,切换回来:onRestart,onStrat,onResume。 在两个以上Activity切换时。Activity是否被Destroy取决于启动模式launchMode。 在配置文件中android:launchMode可以进行配置Activity加载模式。四种activity的加载模式:standard,singleTop,singleTask,singleInstance。 1.standard:默认,表示如果需要就创建。这样会导致,切换一次Activity,就创建一个。切换多少次,按back键就会返货多少次。 例如ActivityMain使用standard模式,当他转到ActivityOtherOne,又切换到ActivityMain时,原先在ActivityMain上面的EditText最开始输入的文字也就没有了。 2.singleTop:如果已经有一个这个Activity实例位于Activity栈的顶部时,就不产生新的实例。 3.singleTask: 会在一个新的task 中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。 4.singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task 中,只能有这个activity实例,不能有其他的实例。 首先简单介绍Intent(意图)。Intent类相当于平台中应用程序之间的通信网 络,Intent是一个要执行的操作的抽象说明,相当于各个Activity之间的桥梁。在一个Activity中想切换到另一个Activity,需要 使用方法startActivity,并需要定义一个Intent来指定意图的组件类。 定义Intent,使用Intent设置需要切换到哪个Activity。使用Activity的startActivity(Intent)方法。 当然也可以在切换Activity的时候传递数据。可以直接使用intent的putExtra方法,也可以new一个Bundle传输入,但是需要让intent把bundle进行putExtras下。 传参数端的Activity: 接收方,例子中的ActivityOtherOne。需要在OnCreate方法中获取。 1,在主Activitiy(ActivityMainExample)需要使用startActivityForResult方法切换 Activity。其中第二个参数requestCode,只有当>= 0,在转会此Activity时才会调用onActivityResult方法,得到回传数据。 ActivityMainExample类中代码 重写onActivityResult方法,获取回传数据 2,在另一个Activity插入回传数据,然后finish。 ActivityOtherTwo类中代码。4.1 Activity
4.1.1 基本用法
123456789101112131415161718192021222324252627282930313233
public class ActivityMainExample extends Activity implements View.OnClickListener { private Button button1;private Button button2;private Button button3; @Overridepublic void onCreate(Bundle savedInstanceState) {Log.v(CommonConfig.LOG_TAG, "ActivityExample onCreate");super.onCreate(savedInstanceState);super.requestWindowFeature(Window.FEATURE_NO_TITLE);super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);super.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);super.setContentView(R.layout.main);this.button1 = (Button) super.findViewById(R.id.button1);this.button2 = (Button) super.findViewById(R.id.button2);this.button3 = (Button) super.findViewById(R.id.button3); this.button1.setOnClickListener(this);this.button2.setOnClickListener(this);this.button3.setOnClickListener(this);} @Overridepublic void onClick(View v) {if (v.equals(this.button1)) { } else if (v.equals(this.button2)) { } else if (v.equals(this.button3)) {}}}
123456789101112131415161718
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="liming.activity.example" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ActivityMainExample" android:label="mainActivity" android:launchMode="standard"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="7" /> </manifest>
4.1.2 常用设置
4.1.3 生命周期
4.2.4 Activity加载模式
4.2 Activity切换
4.2.1最简单的Activity切换
12
Intent intent = new Intent(this, ActivityOtherOne.class);super.startActivity(intent);
4.2.2使用Intent传递数据
Intent intent = new Intent(this, ActivityOtherOne.class);Bundle bundle = new Bundle();bundle.putString("value1", "hello");intent.putExtras(bundle);intent.putExtra("value2","world");super.startActivity(intent);
12345678910
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);...String value1 = super.getIntent().getExtras().getString("value1");String value2 = super.getIntent().getExtras().getString("value2");this.myEditText.setText("value1: " + value1 + ", value2: " + value2);}
4.2.3带回传数据的
123456
Intent intent = new Intent(this, ActivityOtherOne.class);Bundle bundle = new Bundle();bundle.putString("value1", "hello");intent.putExtras(bundle);intent.putExtra("value2","world");super.startActivityForResult(intent, 1);
1234567
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {String result1 = data.getExtras().getString("result1");String result2 = data.getExtras().getString("result2");Log.v(CommonConfig.LOG_TAG, "ActivityExample onActivityResult, requestCode: " + requestCode + ", resultCode: " + resultCode);Log.v(CommonConfig.LOG_TAG, "ActivityExample onActivityResult data - result1: " + result1 + ", result2: " + result2);}
1234567
@Overridepublic void onClick(View v) {super.getIntent().putExtra("result1", "hello android");super.getIntent().putExtra("result2", "hello google");super.setResult(Activity.RESULT_OK, super.getIntent());super.finish();}
4.3 其他常用的Activity
- activity的基本介绍(转)
- Activity基本介绍
- Android-Activity的基本介绍和页面之间数据传递
- 四大组件基本用法与介绍(1)--activity
- 活动(Activity)的基本操作
- Activity的基本用法
- Activity的基本用法
- Activity的基本用法
- Android组件基本介绍之Activity
- android.app.Activity 的介绍(转)
- Activity的生命周期介绍(转载)
- Activity 的介绍和使用(一)
- Activity的生命周期介绍
- Activity的概念介绍
- Activity的launchMode介绍
- Activity的launchMode介绍
- Lucene基本适用介绍(转自BlogJava的BlueDavy)
- 3.1 Activity的基本使用
- 团队建设
- Flex+J2EE获取FlexSession的方法
- JQuery实现radio、select、checkbox禁用
- linux 笔记
- 虚拟机(xen)中credit调度算法分析
- activity的基本介绍(转)
- C#.NET页面跳转+js
- 不修改IIS设置,在IIS6下运行MVC架构的网站
- org.codehaus.xfire.fault.XFireFault: Parameter {http://xxx.xxx}method(方法) does not exist!异常
- Oracle中的游标
- 一个关于文件写入时乱码的故事
- MOSS爬网问题Error from SharePoint site: Data is Null. This method or property cannot be called on Null values
- 如何面对自己
- 引用