2011-02-25 13 views
15

प्रो एंड्रॉयड 2 पुस्तक से: "। ComponentName एक साथ एक पैकेज नाम और एक वर्ग नाम लपेटता उदाहरण के लिए ..."घटक नाम निर्माता के लिए दो पैरामीटर क्यों?

Intent intent = new Intent(); 
Intent.setCompnonet(new ComponentName(
    "com.android.contacts" 
    ,"com.android.contacts.DialContactsEntryActivity"); 
startActivity(intent) 

आप उदाहरण को देखें, तो आप देखेंगे कि पैकेज नाम कक्षा नाम से प्राप्त आसानी से हो सकता है। तो स्पष्ट सवाल यह है कि: दो पैरामीटर क्यों? क्यों न केवल कक्षा का नाम प्रदान करते हैं?

क्या कोई परिदृश्य है जहां कक्षा घटक नामक पर उत्तीर्ण कक्षा उसी कन्स्ट्रक्टर को पास किए गए पैकेज से संबंधित है?

+0

यह सिर्फ ".DialContactsEntryActivity" के साथ काम करता वर्ग के नाम के रूप में एक उदाहरण गूगल मैप्स आवेदन में MapsActivity है? –

उत्तर

25

एप्लिकेशन घटक उस एप्लिकेशन के भीतर मौजूद हो सकता है जिसका पैकेज नाम (इसके एंड्रॉइड मेनिफेस्ट में घोषित) घटक को परिभाषित करने वाले विशिष्ट वर्ग के लिए जावा पैकेज से बिल्कुल अलग है।

intent.setComponent(new ComponentName("com.google.android.apps.maps", 
    "com.google.android.maps.MapsActivity")); 
+1

मैंने सोचा कि यह स्पष्टीकरण होगा लेकिन मुझे एक आधिकारिक उत्तर की आवश्यकता है (उदाहरण के साथ, जैसा कि आपने लाया था)। धन्यवाद। –

1

या:

intent.setComponent(new ComponentName("com.google.android.apps.maps", 
MapsActivity.class.getName())); 
संबंधित मुद्दे