मूल रूप से मेरे AndroidManifest.xml में एक गतिविधि शामिल है जिसे मैं अपने कस्टम एक्शन नाम के माध्यम से पहुंचा।AndroidManifest में किसी इरादे फ़िल्टर के एक्शन नामों के लिए स्ट्रिंग संदर्भों को स्ट्रिंग नहीं करना चाहिए?
<activity
android:label="HERE I AM"
android:name="TestController">
<intent-filter>
<action android:name="com.company.project.TestActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
इस मेनिफेस्ट के साथ startActivity(new Intent("com.company.project.TestActivity"));
ने बिना किसी समस्या के मेरी गतिविधि शुरू की।
लेकिन मैं इस कोडिंग शैली से संतुष्ट नहीं था। शुरुआती समय में मुझे गंभीर समय से परिभाषित स्ट्रिंग स्थिरांक का उपयोग न करने के लिए कहा गया था क्योंकि यह कम रखरखाव कोड के लिए नेतृत्व करता है। और यह वास्तव में एक अंक है एक बिंदु।
तो सबसे पहले मैं अपने App.java वर्ग (एक मैं के लिए इस्तेमाल किया) में एपी ublic static final String MY_ACTION = "com.company.project.TestActivity";
की घोषणा की और इस नाम लगातार इस तरह के माध्यम से अपने घटक पर पहुंच गया:
startActivity(new Intent(App.MY_ACTION));
यह ज्यादा बेहतर लग रहा था लेकिन मैं अभी भी एक ही स्ट्रिंग के दो उदाहरण बनाए रखना था। http://developer.android.com/reference/android/R.styleable.html#AndroidManifestAction_name पर एक
पढ़ें ... यह भी एक संसाधन के लिए एक संदर्भ हो सकता है (के रूप में "@ [पैकेज:] के प्रकार: नाम")? या विषय विशेषता (फार्म "में [पैकेज:] [टाइप:] नाम ") जिसमें इस प्रकार का मान होता है।
तो मैं अनुमान लगाया यह इस स्ट्रिंग परिभाषित सिर्फ एक बार के लिए ठीक होगा। मैं अपने strings.xml में <string name="MY_ACTION">com.company.project.TestActivity</string>
रख दिया और मेरी अनुप्रयोग संशोधित:
public class App ...
public static String MY_ACTION;
@Override
public void onCreate() {
super.onCreate();
MY_ACTION = getString(R.string.MY_ACTION);
...
और सब कुछ अभी भी भला था
... जब तक मैंने <action android:name="com.company.project.TestActivity" />
के बजाय <action android:name="@string/MY_ACTION" />
का उपयोग करने के लिए अपना AndroidManifest.xml बदल दिया। इस बदलाव के बाद मेरे सबसे बड़े आश्चर्य के बाद एप्लिकेशन ने मेरे इरादे के लिए गतिविधि नहीं ढूंढने के बारे में शिकायत करते हुए रनटाइम पर तोड़ दिया। स्ट्रिंग संदर्भ शायद सही ढंग से पार्स नहीं किया गया था। :(
शायद समस्या यह है कि आरस्ट्रिंग कॉन्फ़िगर निर्भर है ...? लेकिन हे, मैं ऐसे स्ट्रिंग संदर्भ को चुनने के लिए इतना पागल नहीं हो सकता जिसका मूल्य कॉन्फ़िगरेशन से कॉन्फ़िगरेशन में बदल सकता है! और developer.android.com ने बताया मुझे एक्शन नामों पर संदर्भों का उपयोग करना ठीक है! मैंने एपीआई स्तर 6, 7, अंत 8 में इस व्यवहार का अनुभव किया है। क्या यह एंड्रॉइड सिस्टम में बस एक साधारण बग है? या क्या मैं कुछ गलत समझता हूं?
मैं पूरी तरह से परेशान हूं, कृपया मेरी मदद करें। अग्रिम धन्यवाद।
हाय MarkG, धन्यवाद, मैं यह भी मानना है करने के लिए इस स्थिति है करते हैं। हमें कॉन्फ़िगर आश्रित और स्वतंत्र तारों को अलग करने में सक्षम वयस्कों के रूप में नहीं माना जाता है। :-) मैं आपका जवाब स्वीकार करता हूं। –