标签:
Intent的概念
Intent的官方解释是“An Intent
is a messaging object you can use to request an action from another app component. ”这里的app component就是指安卓activity,service,contentprovider,broadcastreceiver四大组件。不同的intent可以使这些组件产生相应的动作,为这些组件之间提供了交互能力。那么这个“messaging object”具体的用途有“启动一个activity”,“启动一个service”,“提供一个Broadcast”。
创建和注册一个新的Activity
public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } }
并为其定义布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/second_activity"/> </LinearLayout>
这里string/second_activity定义显示的文字。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.learnerkiwi" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".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 <!--在这里注册了second_activity--> android:name=".second_activity" android:label="@string/second_activity"/> </application> </manifest>
实现由MainActivity对SecondActivity的显式启动
大致想法是要在MainActivity上放置一个按钮,然后通过点击按钮启动SecondActivity。
首先在MainActivity.xml上添加一个button组件的布局
<Button android:id="@+id/start_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="20dp" android:text="@string/start_button" />
之后修改MainActivity.java中的onCreate()方法
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button)findViewById(R.id.start_button); //设置点击事件 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //生成意图,第二个参数为要启动的activity Intent intent = new Intent(MainActivity.this, second_activity.class); startActivity(intent); } });
这里实现了一个onClickListener的匿名内部类,其中重写了onClick()方法,在方法里面构造生成了一个新的Intent对象。
Intent的构造方法为 Intent(Context packgeContext ,Class <?> cls );两个构造参数分别指明了当前组件的类名和目标组件的类名,同时制定两个组件类是因为在Android中有一个活动栈,这样的构造方式才能确保正确的将前一个组件的活动压入栈中,才能在触发返回键的时候前一个组件活动能够正确出栈。
接下来一句startActivity函数是Activity类自带的方法,intent作为参数。由于intent中封装了目标组件的类,通过该方法就可以启动目标组件了。
标签:
原文地址:http://www.cnblogs.com/kiwibird/p/4915989.html