2011-10-25 21 views
5

मैं एक नई पुरानी परियोजना पर काम कर रहा हूं ... मैं इसे एक अलग देश के बाजार के लिए बना रहा हूं, और जब मैंने एक पुराने प्रोजेक्ट से अपना कोड कॉपी किया मिगेट एंड्रॉइड कोड की तरह कुछ गलती (एडीटी 14 के रूप में, संसाधन क्षेत्रों को स्विच मामलों के रूप में उपयोग नहीं किया जा सकता है।) यह स्ट्रिंग्स के लिए होता है जो स्ट्रिंग्स.एक्सएमएल फ़ाइल में और लेआउट के लिए होता है। लेकिन यह मुझे कुछ सकारात्मक फिक्स नहीं देता है ... मैं इसे कैसे ठीक कर सकता हूं ???? -> मुख्य मेनू से साफएंड्रॉइड संसाधन आईडी अचानक अंतिम नहीं हैं, फ़ील्ड को हल नहीं किया जा सकता

@Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      //Here is mistake 
      setContentView(R.layout.main); 

      //Kreira AlertDialog sa dva dugmeta koji ce se pojaviti pri aktiviranju aplikacije 
      ad = new AlertDialog.Builder(this).create(); 
//And HERE 
      ad.setTitle(getString(R.string.vasa_trenutna_lokacija)); 
      //And HERE 
ad.setMessage(getString(R.string.da_bi_ste_koristili_aplikaciju)); 
      //And HERE 
      ad.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.dozvoli), new DialogInterface.OnClickListener() { 

      //Klikom na dugme Dozvoli otvara se novi prozor 
      @Override 
      public void onClick(DialogInterface ad, int which) { 
       Intent i = new Intent(NiskiMerakActivity.this, TrenutnaLokacija.class);    
       startActivity(i); 
       finish(); 
       } 
      }); 

      ad.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.ne_dozvoli),new DialogInterface.OnClickListener() { 

      //Klikom na dugme Ne dozvoli aplikacija se zatvara 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        finish(); 

       } 
      }); 
+1

अपने logcat पोस्ट करें। मुझे आशा है कि आपको अपनी कक्षा में आर फाइल के आयात के कारण त्रुटि नहीं मिल रही है। – Hiral

+0

जिस तरह से आप त्रुटि या अपवाद प्राप्त कर रहे हैं ?????? –

+0

मेरे बेवकूफ !!!! मैंने android.R आयात किया, लेकिन कुछ रेजोन के लिए यह आर से सभी आयात नहीं किया। मैं जोड़ता हूं। * और अब यह लगता है कि यह ओकी है !!! धन्यवाद .... इसे एक उत्तर की तरह रखो और मैं इसे सच देखूंगा ... – Jovan

उत्तर

7

एडीटी 14 के रूप में, संसाधन क्षेत्रों को स्विच मामलों के रूप में उपयोग नहीं किया जा सकता है।

यह मेरे साथ भी हुआ, मुझे यह त्रुटि मिली, भले ही मैं एक स्विच स्टेटमेंट में आर चर का उपयोग नहीं कर रहा था। त्रुटि संदेश से गुमराह मत बनो। आपको मूल रूप से कुछ त्रुटि है जो R.java फ़ाइल से संबंधित है। सुनिश्चित करें कि आप R.java आयात नहीं करते हैं क्योंकि आपके पास अपना होना चाहिए। अपनी आरजेजा फ़ाइल हटाएं, प्रोजेक्ट बनाएं, और देखें कि आपकी आरजेजा फ़ाइल जेनरेट हो गई है या नहीं। यदि नहीं, तो आपको एक त्रुटि हो सकती है जो आपकी R.java फ़ाइल को अद्यतन होने से रोक रही है। प्रोजेक्ट> किसी भी त्रुटि को खोजने के लिए साफ़ करें। त्रुटियों से छुटकारा पाएं और अपनी परियोजना का पुनर्निर्माण करें ताकि आपकी आरजेजा फ़ाइल जेनरेट हो और अद्यतित हो।

+0

यह पूरी तरह से असत्य है। मैं एडीटी 16 का उपयोग कर रहा हूं और संसाधन चर का उपयोग कर चर के रूप में उपयोग कर रहा हूं, और मेरे आर फाइल स्थिरांक सभी अंतिम हैं। –

+5

@ जेसनरोबिन्सन एडीटी 14 के रूप में आर स्थिरांक पुस्तकालय परियोजनाओं में अंतिम नहीं हैं। Http://tools.android.com/tips/non-constant-fields – johlo

+1

@johlo शायद बाद में संस्करण में उस परिवर्तन को वापस कर दिया, क्योंकि मेरी आईडी निश्चित रूप से 'अंतिम' है और अब मैं एडीटी 20. –

5

शायद तुम सिर्फ अपनी परियोजना Clean करने की जरूरत है, यानि कि परियोजना: यहाँ कोड है। ऊपर दिए गए कोड में त्रुटियां नहीं होनी चाहिए। समस्या केवल switch कथन के साथ है। कृपया यहां साफ करने और टिप्पणी करने का प्रयास करें परिणाम क्या है।

+0

मेरे प्रश्न के तहत एक टिप्पणी देखें ... लेकिन यह एक स्विच स्टेटमेंट में वापस आ गया ... i पता नहीं क्यों ... धन्यवाद वैसे भी ...: डी – Jovan

11

http://tools.android.com/tips/non-constant-fields

समाधान का हवाला देते हुए इस बात के लिए सरल है: एक अगर-बाकी बयान में स्विच बयान बदलें।

के बाद से अपने कोड स्निपेट के ऊपर एक switch() बयान के लिए प्रकट नहीं होता है, फिर भी अपने प्रश्न एक switch() बयान को संदर्भित करता है, मुझे लगता है तुम गलत कोड है।

+0

मेरे प्रश्न के तहत एक टिप्पणी देखें ... लेकिन यह एक स्विच स्टेटमेंट में वापस आ गया ... मुझे नहीं पता क्यों ... धन्यवाद वैसे भी ...: डी – Jovan

+1

धन्यवाद :) यह मेरे लिए इसे हल किया गया। – bencallis

+0

यह मेरे लिए सबसे आसान समाधान है। धन्यवाद! – Ric17101

2

मैं android.R.*;

यह मेरी त्रुटियों के सभी को मंजूरी दे दी के लिए android.r; से मेरी आयात बदलकर इस तय की और मैं फिर से मेरे ऐप को संकलित करने में सक्षम था।

+0

आप इसे क्लीनर बनाने के लिए उस आयात लाइन को भी हटा सकते हैं। – kuchi

0

बस ग्रहण परियोजना में चयन करें -> साफ करें, और समस्या हल हो गई थी। मुझे बस इस ऐप में एक नया पैकेज बनाकर और इसे हटाकर यह त्रुटि मिली।

0

यहां दिए गए चरण हैं जो मुझे इस समस्या को हल करने में मदद करते हैं।

  1. हटाएँ (। ग्रहण इसे तुरंत पुन: होगा वहाँ कोड या लेआउट के साथ एक समस्या है, तो नहीं) R.java
  2. स्वच्छ परियोजना (ग्रहण मेनू 'प्रोजेक्ट' & 'स्वच्छ'
  3. पुनः संकलित करें प्रोजेक्ट

ये चरण मेरे काम के साथ समस्या का समाधान करते हैं।

+0

स्टैक ओवरफ़्लो में आपका स्वागत है! प्रतिलिपि पोस्ट करते समय सावधान रहें और बॉयलरप्लेट/वर्बैटिम कई प्रश्नों के उत्तर पेस्ट करें, इन्हें समुदाय द्वारा "स्पैमी" के रूप में फ़्लैग किया जाना चाहिए। यदि आप ऐसा कर रहे हैं तो आमतौर पर इसका मतलब है कि प्रश्न डुप्लिकेट हैं इसलिए उन्हें इसके बजाय ध्वजांकित करें। आपके मार्गदर्शन के लिए – Kev

+0

धन्यवाद केवी। मैं भविष्य में अपना जवाब देखेंगे। –

1

आज मुझे एक ही त्रुटि का सामना करना पड़ रहा था, मेरे ग्रहण प्रोजेक्ट में 1 प्रोजेक्ट लाइब्रेरी जोड़ा गया है, और मैं सभी कथनों को बयान में बदलने वाला था, लेकिन मुझे एहसास हुआ कि मेरे प्रोजेक्ट में पुस्तकालय की जांच है - प्रोजेक्ट -> गुण -> एंड्रॉइड, इसलिए मैंने इसे अभी चालू कर दिया है और यह समस्या का समाधान था, यह ग्रहण के स्वयं के सुझाव भी था, परियोजना पुस्तकालयों के लिए 14 स्थिरांक चेतावनी ध्यान से एंड्रॉइड माइग्रेशन कोड पढ़ना।

+0

+1 यदि "लाइब्रेरी" संपत्ति का पता लगाया गया है, तो आर फ़ाइल जेनरेट की गई पहचानकर्ताओं को "सार्वजनिक स्थिर अंतिम int" के बजाय "सार्वजनिक स्थैतिक int" के रूप में घोषित करता है - इसलिए त्रुटि संदेश।संभवतः यह कंपाइलर द्वारा ऑप्टिमाइज़ किए जाने की अनुमति देने के बजाय पहचानकर्ताओं को बाहरी रूप से दृश्यमान बनाने के साथ कुछ करना है। – MZB

1

मुझे पता चला कि यह आपके पैकेज नाम को शामिल करने के लिए आर के आयात विवरण को बदलने के बाद काम करता है।

उदाहरण के लिए:

आयात android.R;

अब

आयात com.name.package.R है;

0

मैंने उत्पन्न आरजेजा फ़ाइल, स्वच्छ, पुनर्निर्माण आदि को हटाने के संबंध में ऊपर वर्णित सभी दृष्टिकोणों का प्रयास किया लेकिन यह दृष्टिकोण मेरे लिए काम नहीं करता था।

इस मामले को किसी और के साथ बदलने की स्थिति क्या थी-अगर श्रृंखला मेरी राय में एक गन्दा तय थी लेकिन मैं इसे किसी अन्य तरीके से काम नहीं कर सका।

मैं ग्रहण 4.2.1 और Android एसडीके उपयोग कर रहा हूँ 4.2.2

8

यदि आईडी की अपनी स्विच मामले में एक पुस्तकालय के अंदर है, दुर्भाग्य से नई एडीटी संस्करणों इसका समर्थन नहीं करते।

लेकिन, आप यह आसानी से अगर-किसी और के लिए, के रूप में गूगल की वेबसाइट पर दिखाया परिवर्तित कर सकते हैं:

http://tools.android.com/tips/non-constant-fields 
संबंधित मुद्दे