`
lish94
  • 浏览: 6951 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

activity的android:name所指的Activity实现类的简写问题

阅读更多

      今天工作之余发现公司里有一本Android的书,顺手翻了翻,发现Android程序框架的设计挺奇特的,索性下载了Android自带的例子,配置了一下环境(整套环境配置也是极其简单),把ApiDemos跑了一下,看了看代码,研究了一下AndroidManifest.xml文件中的配置,发现了一个问题,先看如下的配置片段:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.apis">


<activity android:name="ApiDemos">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


<activity android:name=".app.HelloWorld" android:label="@string/activity_hello_world">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.SAMPLE_CODE" />
            </intent-filter>
        </activity>


      activity组件的android:name属性采用类名的简写方式,查看文档类名的简写格式为“.ClassName”,但为什么<activity android:name="ApiDemos">里的android:anem="ApiDemos",而不是android:anem=".ApiDemos"呢? 而后面的所有Activity组件的android:name的值都是“.ClassName”格式呢?马上google查询android:name属性值的说明,但未查到有类名前不加“.”的说明!

      无奈,那就实际测试验证吧,结果"ApiDemos"与".ApiDemos"的写法都能正确运行程序。难道类名前有“.”与没有“.”是一样的? 明明文档中说明的是“.ClassName”格式啊!于是把其它的Activity的android:name的值字符串中的第一个“.”去掉,再运行程序,却不行,越发的感觉奇怪!郁闷!经过反复的测试,发现了一个规则:

      如果manifest中指定了package属性,比如指定为"com.android.sample",如果activity的实现类也在这个package下,则android:name为实现的类名,这个类名前加不加点都没有关系,如果activity的实现类是在默认包的子包里面,则这个“.”是必须有的,比如activity的实现是com.android.sample.app.DialogActivity,则android:name必须写成.app.DialogActivity或者com.android.sample.app.DialogActivity。如果只写app.DialogActivity,则会报错。

      呵呵,感觉Android的这个设计有点失败,统一格式,强制简写方式必须有“.”不就得了吗,免得让人晕乎!官方的例子里居然还特意这样设计,难道这有特殊的用意?

      管它呢!不论Activity的子类是否在默认package下,还是在默认包的子包下,类名的简写方式统统采用“.ClassName”的方式!

 

分享到:
评论

相关推荐

    Android样式主题_国际化_动画

    国际化(通常缩写为i18n)是指设计和实现能够支持多种语言和地区的应用程序的过程。在Android开发中,国际化主要涉及到资源文件的使用,尤其是字符串资源文件。 在res目录下,开发者可以为不同的地区创建不同的资源...

    Android_实例

    如果类与应用位于同一个包内,则可以简写为“.”。 - **多值属性**:当一个元素需要表示多个值时,可以通过重复该元素来实现,而不能在一个属性中同时表示多个值。 - **资源引用**:引用资源(如图片或字符串)时...

    Android扫描效果

    在Android项目中,实现扫描功能通常会使用到开源库,如Zxing(ZXing是“Zebra Crossing”的缩写,意为斑马线),它是一个开源的条码图像处理库,可以解析多种格式的条码和二维码。首先,我们需要在项目的build....

    android常用控件

    - 用户交互相关的类命名一般以`Activity`结尾,如`LoginActivity.java`。 - 自定义变量推荐以小写的`m`开头,如`EditText mUserName = (EditText) findViewById(R.id.username_edit);`。 #### 二、常用布局 ...

    【国开搜题】国家开放大学 一网一平台 Android核心开发技术03 期末考试押题试卷.docx

    - **解析:**当一个Activity被配置为 `&lt;action android:name="android.intent.action.MAIN"/&gt;` 和 `&lt;category android:name="android.intent.category.LAUNCHER"/&gt;` 时,意味着它被指定为应用程序的入口点,即启动时...

    Android(经典实例).pdf

    SDK是软件开发工具包(Software Development Kit)的缩写,它为开发者提供了在特定平台上开发应用所需的工具、库文件、文档以及示例代码。Android SDK是专门针对Android平台的开发工具包。文档强调安装过程并不复杂...

    Android应用开发试题[文](20211012173847).docx

    2. Android的VM虚拟机:Android使用的是Dalvik虚拟机,而不是JVM、KVM或framework。 3. Android VM运行的文件后缀名:Dalvik虚拟机运行的文件后缀名为.dex,这是Dalvik Executable的缩写,包含了优化过的字节码。 ...

    Android中使用颜色资源完成教学案例的步骤说明.pdf

    在Android开发中,颜色资源是应用程序界面设计中不可或缺的一部分,它们允许开发者集中管理颜色值,便于在多个组件中复用和动态改变颜色。以下是对"Android中使用颜色资源完成教学案例的步骤"的详细说明: 1. **...

    Android 带闪光灯的二维码源码.rar

    在Android开发中,实现带有闪光灯功能的二维码扫描是一项常见的需求。这个"Android带闪光灯的二维码源码"提供了一个完整的实例,可以帮助开发者理解和实践如何在Android应用中集成二维码扫描和控制闪光灯的功能。...

    android扫描二维码示例代码

    在Android平台上实现二维码扫描功能,通常需要借助第三方库或者Android本身提供的相机API来完成。这里我们将探讨如何在Android应用中集成二维码扫描,包括基础的原理、步骤以及关键代码示例。 首先,Android系统并...

    CarloZIME:Android NAME

    【标题】"CarloZIME: Android NAME"指的是一个与Android开发相关的项目或库,由开发者Carlo ZIME创建。这个项目的重点可能在于提供一种命名规范或者特定的工具,用于处理Android应用中的名称管理。 【描述】"卡洛·...

    android 扫码二维码

    在Android平台上,实现二维码扫描是一项常见的功能,广泛应用于各种应用中,如支付、分享链接、登录验证等。本文将深入探讨如何在Android应用中简单实现二维码的扫描。 首先,我们需要集成一个二维码扫描库。Zxing...

    二维码实现

    1. **集成库**:Android开发中常用的二维码扫描库是Zxing(ZXing是“Zebra Crossing”的缩写,意为斑马线),这是一个开源的条码图像处理库。首先,需要在项目中添加Zxing的依赖。在`build.gradle`文件中,添加如下...

    android 二维码集成

    Zxing(又名ZXing,"zebra crossing"的缩写)是一个开源的二维码和条形码处理库,适用于多种平台,包括Android。在Android项目中,我们通常使用它的Android端库——`com.google.zxing:core`和`...

    android2.2播放flv flash文件实例eclipse工程

    在Android平台上实现FLV视频播放,特别是在Android 2.2版本中,通常涉及到与Adobe Flash Player的集成。本文将深入探讨如何在Eclipse环境中构建一个能够播放FLV文件的Android应用,同时也会提及所需的插件和测试代码...

    Android应用源码之MakeBarcode.zip

    开发者可能会使用Zxing的Android端库`com.google.zxing:android-core`和`com.google.zxing:android-integration`,这两个库包含了Android设备上生成和扫描条形码所需的组件。 1. **Android Studio环境**:项目应该...

    百度地图jar包,so文件

    这里提到的“百度地图jar包,so文件”是开发Android应用时使用百度地图服务所必需的组件。 首先,我们来理解一下jar包。在Java编程语言中,JAR(Java Archive)文件是一种归档格式,它将多个类文件打包在一起,方便...

    Android开发规范.pdf

    Android开发规范是保证代码质量、提高团队协作效率的重要准则,主要涵盖了编码规范、性能优化等多个方面。以下是对这些规范的详细解释: 1. **编码规范**: - **Java编码**:尽量避免在代码中使用中文,注释除外。...

    Android 使用ORMLite打造万能泛型Dao简化数据持久化层

    然后,为每个数据实体类创建对应的Dao实现类,继承自`OrmLiteBaseDao, ID&gt;`,并利用`@DatabaseTable`注解标注实体类,`@DatabaseField`注解标注字段。例如: ```java @DatabaseTable(tableName = "User") public ...

    andriod编码规范

    - 与用户交互的类,如Activity,应当以××Activity.java的形式命名。 - 自定义变量以小写字母m开头,例如`EditText mUserName = (EditText)findViewById(R.id.username_edit)`。 6. 常用布局: - Android提供了...

Global site tag (gtag.js) - Google Analytics