2011-01-28 11 views
48

पंजीकरण के लिए मैं Android ओएस के लिए प्रोग्रामिंग में एक noob की तरह कर रहा हूँ "डॉट" है। मैं किताबें मैं पढ़ कर दिया गया है में देखा है कि लेखकों जब प्रकट में उनकी गतिविधियों दर्ज की गतिविधि नाम के सामने एक "डॉट" रखा है। मैंने एंड्रॉइड डेवलपर साइट के चारों ओर देखा है और मुझे पता नहीं लगा कि हमें "डॉट" क्यों चाहिए। क्या "डॉट" वास्तव में एक उद्देश्य सर्वर है? क्या मुझे इसकी ज़रूरत है? मैंने नीचे एक उदाहरण शामिल किया है। सूचना "डॉट" "NewActivity" से पहले:क्या जब एक गतिविधि

<activity android:name=".NewActivity"></activity> 

उत्तर

40

आप बिंदु पर ध्यान दिया है के रूप में आवश्यक नहीं है, लेकिन यह मूल रूप से मतलब है: गतिविधि वर्ग एप्लिकेशन का एक ही पैकेज में रहती है। तो, अपने अनुप्रयोग पैकेज है यदि: तो com.my.package:

  • .YourActivity मतलब है कि आपके वर्ग com.my.package के अंदर है।
  • YourActivity मतलब है कि आपके वर्ग com.my.package के अंदर है (एक ही जैसा कि ऊपर)।
  • .activities.YourActivity मतलब है कि आपके वर्ग com.my.package.activitites के अंदर है। com.my.package.activities.YourActivity जो उपयोगी होता है जब आप अपने अनुप्रयोग के विभिन्न संस्करणों है और स्वचालित रूप से पैकेज के लिए संदर्भ बदलने के लिए चींटी का उपयोग करना चाहते:
  • तुम भी कुछ ऐसा कर सकते हैं।
+5

के साथ इस जगह ले सकता है। ऐसा लगता है कि एक नंगे "आपकी सक्रियता" बिल्कुल काम करती है। इसे (बहुत खराब) डिफ़ॉल्ट पैकेज में क्लास नाम के रूप में क्यों नहीं समझाया जाता है? –

+2

यह कोई दुर्घटना नहीं है ...स्रोत कोड पर एक नज़र डालें;) – Cristian

+0

दस्तावेज़ीकरण के समान नहीं है कि स्रोत कोड क्या कर रहा है, इसलिए इसे दुर्घटना के रूप में जाना जा सकता है। –

26

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

एंड्रॉयड: नाम
वर्ग कि गतिविधि, गतिविधि का एक उपवर्ग को लागू करता है का नाम है। विशेषता मान (जैसे, "com.example.project.ExtracurricularActivity") एक पूरी तरह से योग्य वर्ग के नाम होना चाहिए। हालांकि, एक आशुलिपि के रूप में, अगर नाम के पहले अक्षर अवधि है (उदाहरण के लिए, ".ExtracurricularActivity"), यह पैकेज का नाम <manifest> में निर्दिष्ट के साथ जोड़ दिया गया है।

तो ApplicationManifest.xml दिया:

<manifest 
    ... 
    package="com.stackoverflow.android.geotask" 
    ...> 
    <application ...> 
     <activity android:name=".view.TaskListListView" ...> 
     ... 
    </application> 
</manifest> 

तब से android:name=".view.TaskListListView", एक अग्रणी अवधि है तो यह android:name="com.stackoverflow.android.geotask.view.TaskListListView" रूप में व्याख्या की है।

+1

मुझे लगता है कि हमेशा पूरी तरह से योग्य वर्ग नाम शामिल करना सबसे अच्छा है, इस तरह, भ्रमित बिंदु से बचा जा सकता है। – VSG24

2

डॉट कि आपके ऐप्स मेनिफ़ेस्ट में अपने package संलग्न कर देगा।

तो अपने पैकेज का नाम com.app.demo है।

<activity android:name=".HelloWorldActivity"> 

इसका मतलब है कि गतिविधि डेमो पैकेज के अंदर झूठ बोल रही है।

आप प्रलेखन कहना है कि आप प्रमुख डॉट जरूरत पैकेज का नाम पूर्व pended प्राप्त करने के लिए लगता है

<activity android:name="com.app.demo.HelloWorldActivity"> 
संबंधित मुद्दे