Android用Intent这个特殊的类实现在activity与activity之间的切换。Intent类用于描述应用的功能。在Intent的描述中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有AMIN、VIEW、PICK、EDIT等。而动作队形的数据则以URL的形式表示。例如要查看一个人的联系方式,需要创建一个动作类型为View的Intent,以及表示这个人的URL。
通过解析各种Intent,从一个屏幕导航到导航到另一个屏幕是很简单的。当向前导航时,Activity将会调用startActivity(IntentmyIntent)方法。然后系统会在所有已安装的应用中定义的IntentFilter中查找,找到最匹配的myIntent的Intent对应的Activity。新的Activity接收到myIntent的通知后,开始运行。当startActivity方法被调用时,将触发myIntent的动作,该机制提供了两个关键好处:
1、Activity能够重复利用从其他组建中intent形式产生的请求
2、Activity可以在任何时候被具有相同的IntentFilter的新的Activity取代
下面举例寿命两个Activity之间的的切换
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="第一个Activity" /> <Button android:text="切换" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" > </Button> </LinearLayout>
main1.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="第二个Activity" /> <Button android:text="返回" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" > </Button> </LinearLayout>
Activity01.java
package cn.myintent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Activity01 extends Activity { /** Called when the activity is first created. */ Button button ; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button=(Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub /*新建一个Intent对象*/ Intent intent=new Intent(); /*制定intent要启动的类*/ intent.setClass(Activity01.this,Activity02.class); /*启动一个新的Activity*/ startActivity(intent); /*关闭当前Activity*/ Activity01.this.finish(); } }); } }
Activity02.java
package cn.myintent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Activity02 extends Activity { /** Called when the activity is first created. */ Button button ; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main1); button=(Button) findViewById(R.id.button2); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub /*新建一个Intent对象*/ Intent intent=new Intent(); /*制定intent要启动的类*/ intent.setClass(Activity02.this,Activity01.class); /*启动一个新的Activity*/ startActivity(intent); /*关闭当前Activity*/ Activity02.this.finish(); } }); } }
注意该项目使用2个Activity,每一个Activity都要在AndroidMainifest.xml文件中申明<application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Activity01" 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=".Activity02" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
Android学习总结(一)---Intent
最新推荐文章于 2023-11-23 14:08:24 发布