Android学习:自定义Activity启动与数据传递详解

需积分: 31 2 下载量 138 浏览量 更新于2024-09-09 收藏 9KB TXT 举报
在Android开发中,学习Activity的生命周期和页面跳转是至关重要的。本文档将带你逐步探索以下几个关键知识点: 1. 创建自定义Activity 在Android项目中,首先需要在`AndroidManifest.xml`文件中声明你的Activity。一个基本的Activity配置包括将其标记为`<activity>`元素,并设置必要的属性,如图标(`android:icon`)和标签(`android:label`)。例如,`SecondActivity`的定义应包含以下内容: ```xml <activity android:icon="@drawable/photo3" android:label="Second" android:name="com.example.activity.SecondActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> ``` 这表示`SecondActivity`是一个可以作为应用入口的活动,可以通过指定`action`和`category`来启动。 2. 启动Activity-显示启动与隐式启动 - 显示启动(explicit launch)是指通过明确调用`startActivity()`方法,指定目标Activity。例如,从当前Activity启动`SecondActivity`: ```java Intent intent = new Intent(); intent.setClass(this, SecondActivity.class); startActivity(intent); ``` - 隐式启动(implicit launch)则是通过系统广播或Intent解析,例如当用户点击某个外部链接或者执行某个动作时,系统会根据Intent的`ACTION`和`CATEGORY`来决定启动哪个Activity。在`SecondActivity`的定义中,已经设置了可以隐式启动的意图过滤器。 3. 获取隐式启动的数据传递 隐式启动时,如果需要传递数据,可以在Intent中添加`putExtra()`方法。例如,从`MainActivity`传递数据到`SecondActivity`: ```java Intent intent = new Intent(); intent.putExtra("key", "value"); startActivity(intent, SecondActivity.class); ``` 在`SecondActivity`中,可以使用`getIntent().getStringExtra("key")`来接收这些数据。 4. 显示启动传递数据 显示启动时,同样可以通过`putExtra()`添加数据,然后在目标Activity中通过`getIntent().getSerializableExtra()`或`getIntExtra()`等方法获取。 5. 禁止横竖屏切换 为了限制屏幕方向,可以在`AndroidManifest.xml`中的`<activity>`元素中设置`android:configChanges`属性,如: ```xml <activity ...> <activity android:configChanges="orientation|screenSize"/> </activity> ``` 这样,系统不会自动处理屏幕方向变化,需要开发者手动处理旋转逻辑。 6. 使用`startActivityForResult()` `startActivityForResult()`用于发起一个请求,它会在启动的Activity完成操作后返回结果。当你需要获取数据返回时,应在`SecondActivity`中设置`setResult()`,并在完成后调用`finish()`,然后在`MainActivity`中通过`onActivityResult()`处理结果。 总结来说,本文档详细介绍了Android开发中Activity的创建、启动方式、数据传递以及屏幕方向管理。理解并掌握这些核心概念,能帮助你构建出更灵活、功能丰富的应用程序。