AndroidManifest.xml裡加入不同package的component (Activity、Service裡android:name裡指定的值一般為句號加類名),可以通過指定完全類名(包名+類名)來解決

來源:互聯網
上載者:User

標籤:icon   draw   tle   android   sdk   action   xmlns   bar   png   

我們都知道對於多個Activity如果在同一個包中,在Mainfest中可以這樣註冊

Xml代碼  
  1. <span style="font-size: small;"><?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="com.trinea.sns.activity"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <uses-sdk android:minSdkVersion="3" />  
  7.     <uses-permission android:name="android.permission.INTERNET" />  
  8.       
  9.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  10.         <activity android:name=".UpdateStatusActivity"  
  11.                   android:label="@string/app_name">  
  12.             <intent-filter>  
  13.                 <action android:name="android.intent.action.MAIN" />  
  14.                 <category android:name="android.intent.category.LAUNCHER" />  
  15.             </intent-filter>  
  16.         </activity>  
  17.   
  18.     <activity android:name=".ViewSnsActivity"  
  19.                   android:label="@string/app_name">  
  20.         </activity>  
  21.     </application>  
  22. </manifest></span>  

 上面的UpdateStatusActivity和ViewSnsActivity同樣在包com.trinea.sns.activity下面可以如此定義,但如果

UpdateStatusActivity在包com.trinea.sns.activity下,而ViewSnsActivity在包com.trinea.sns.activity2下面怎麼辦呢

 

每一個Activity、Service等應用程式組件都會對應AndroidManifest.xml檔案中的一個<activity>、<service>標籤。在這些標籤中有一個必選的屬性:android:name,該屬性需要指定一個類名,像上面的.UpdateStatusActivity和android.intent.action.MAIN。大家發現這兩個有什麼不同了嗎,對了。第一個是.的方式而第二個是全路徑的方式。指定android:name屬性值有3種方式,如下:

1.  指定完全的類名(packagename+classname),例如,net.blogjava.mobile.Main。

2.  只指定類名,例如,.Main,其中Main前面的“.”是可選的。該類所在的包名需要在<manifest>標籤的package屬性中指定。

3.  指定相對類名,這種方式類似於第2種方式,只是在<activity>標籤的android:name屬性中不光指定類名,還有部分包名。例如,如果Main類在net.blogjava.mobile.abcd包中,就可以在<manifest>標籤的package屬性中指定net.blogjava.mobile,然後在<activity>標籤的android:name屬性中指定.abcd.Main

 

   由此可見,package的目的是為了更方便地指定android:name以及其他相關屬性的值,就是一個預設的包。如果不在android:name中指定包名,會自動將package屬性值加在前面

 

參考:http://developer.android.com/guide/topics/manifest/activity-element.html#nm

AndroidManifest.xml裡加入不同package的component (Activity、Service裡android:name裡指定的值一般為句號加類名),可以通過指定完全類名(包名+類名)來解決

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.