【Android 开发教程】链接Activities

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


在一个Android应用中可以包含零个或多个Acivity。当你的应用中包含多个Activity时,通常要在各个Activity中间跳转。在Android中,完成这些操作需要使用Intent的组件。

理解这个既重要又抽象概念的最好办法,就是尝试一下。下面的例子展示如何在两个Activity之间跳转。

1. 创建一个工程,UsingIntent。

2. 创建两个Activity:UsingIntentActivity和SecondActivitty。

3. AndroidManifest.xml中的代码。

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="net.horsttnann.UsingIntent"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdkandroid:minSdkVersion="14"/>
  7. <application
  8. android:icon="@drawable/ic_launcher"
  9. android:label="@string/app_name">
  10. <activity
  11. android:name=".UsingIntentActivity"
  12. android:label="@string/app_name">
  13. <intent-filter>
  14. <actionandroid:name="android.intent.action.MAIN"/>
  15. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  16. </intent-filter>
  17. </activity>
  18. <activity
  19. android:name=".SecondActivity"
  20. android:label="SecondActivity">
  21. <intent-filter>
  22. <actionandroid:name="net.horsttnann.SecondActivity"/>
  23. <categoryandroid:name="android.intent.category.DEFAULT"/>
  24. </intent-filter>
  25. </activity>
  26. </application>
  27. </manifest>
4. 在res/layout文件夹下,新建一个叫secondactivity.xml的文件。
[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"
  9. android:text="ThisistheSecondActivity!"/>
  10. <TextView
  11. android:layout_width="fill_parent"
  12. android:layout_height="wrap_content"
  13. android:text="Pleaseenteryourname"/>
  14. <EditText
  15. android:id="@+id/txt_username"
  16. android:layout_width="fill_parent"
  17. android:layout_height="wrap_content"/>
  18. <Button
  19. android:id="@+id/btn_OK"
  20. android:layout_width="fill_parent"
  21. android:layout_height="wrap_content"
  22. android:onClick="onClick"
  23. android:text="OK"/>
  24. </LinearLayout>
5. SecondActivity中的代码。
[java] view plain copy
  1. publicclassSecondActivityextendsActivity{
  2. @Override
  3. publicvoidonCreate(BundlesavedInstanceState){
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.secondactivity);
  6. }
  7. }
6. main.xml中的代码。
[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical">
  6. <Button
  7. android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"
  9. android:onClick="onClick"
  10. android:text="Displaysecondactivity"/>
  11. </LinearLayout>
7. UsingIntentActivity中的代码。
[java] view plain copy
  1. publicclassUsingIntentActivityextendsActivity{
  2. /**Calledwhentheactivityisfirstcreated.*/
  3. @Override
  4. publicvoidonCreate(BundlesavedInstanceState){
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. }
  8. publicvoidonClick(Viewview){
  9. startActivity(newIntent("net.horsttnann.SecondActivity"));
  10. }
  11. }
8. 按F11调试。


【Android 开发教程】链接Activities_第1张图片


【Android 开发教程】链接Activities_第2张图片


Intent-Filter中的anction属性尽量使用反转域名,这样就能减少被其他使用相同action的程序启动的几率。

Intent-Filter中的category属性是android.intent.category.DEFAULT。只有添加了这个属性,这个Activity才能被另外一个Activity使用startActivity()方法来开启。

还有另外一种启动Activity的方法,但如果想使用这个方法,就必须确保这两个Activity在同一个工程下面。

[java] view plain copy
  1. startActivity(newIntent(this,SecondActivity.class));

你可能感兴趣的:(android,开发)