【发布时间】:2014-01-01 15:37:09
【问题描述】:
我应该在 android manifest 中编写每个活动吗?如何编写?每个活动都必须有意图过滤器吗?
【问题讨论】:
标签: android android-activity android-manifest
我应该在 android manifest 中编写每个活动吗?如何编写?每个活动都必须有意图过滤器吗?
【问题讨论】:
标签: android android-activity android-manifest
在 Manifest 文件中添加活动的多种方式。
意图过滤器不是所有活动的必要标签,它是可选的。
在清单中的应用程序标签中添加 Activity:
<!-- Main Activity-->
<activity android:name=".YourActivityName" >
<intent-filter>
<!-- MAIN represents that it is the Main Activity-->
<action android:name="android.intent.action.MAIN" />
<!-- Launcher Denotes that it will be the first launching activity-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--Add Other activities like this-->
<activity android:name=".YourActivityName2" >
<!--Default Intent Filter-->
<intent-filter>
<action android:name="android.intent.action.DEFAULT" />
</intent-filter>
</activity>
<!--OR Other activities like this And intent filter is not necessary in other activites-->
<activity android:name=".YourActivityName3" >
</activity>
<!--OR Add Other activities like this-->
<activity android:name=".YourActivityName4" />
【讨论】:
必须在
中提及活动<activity>
...
</activity>
标签。每个活动标签都必须在
内指定<application>
...
</application>
标签。
默认activity需要有一个
<intent-filter>
...
</intent-filter>
标签,它会让安卓系统明白这个活动将在应用启动时被调用。
A 可以包含多个属性,但只有 name 属性是必需的。
以下是完整列表:https://developer.android.com/guide/topics/manifest/activity-element
默认活动标签:
<activity
android:name=".LoginActivity"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
其他活动标签:
<activity
android:name=".SelectSubjectActivity"
android:windowSoftInputMode="adjustResize" />
【讨论】:
您必须在 android manifest 中提及每个活动。
并非所有活动都需要意图过滤器。 意图过滤器显示何时启动此活动。 通常你会有一个带有意图过滤器的活动,它表明它是应用程序启动时的第一个活动。
清单中的应用程序标签内:
<activity android:name="ActivtyName" >
</activity>
<activity android:name="ActivtyName2" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
【讨论】:
只需要android:name="ActivtyName"。
【讨论】:
如果您使用的是 Eclipse ADT,则在创建新 Activity 而不是创建类时,从 New > Others 创建一个 Activity...这样 ADT 会自动将您的 Activity 添加到 Manifest。
【讨论】:
我实现了“Android 开发者基础课程”。我发现添加带有嵌套元素和不带有嵌套元素的活动时存在细微差别。
默认活动是这样定义的:
<activity
android:name=""
android:label=""/>
当您添加带有结束标签的活动时(因为有嵌套元素),您需要将名称属性移动到开始标签:
<activity android:name="">
android:label=""/>
<meta-data/>
</activity>
开启https://developer.android.com/guide/topics/manifest/manifest-intro
我们可以发现name属性是强制性的:
您的子类的名称必须用 name 属性指定, 使用完整的包装名称。
【讨论】:
您必须在清单中为每个活动编写条目,并且不需要无意图过滤器。你可以简单地写这个:
<activity
android:name="com.example.chatter.List"
android:label="@string/title_activity_list" >
</activity>
【讨论】: