2013-08-09 9 views
35

मैं अपने ऐप पर काम कर रहा था और जब तक मैंने जावा में छवि प्रदर्शित करने की कोशिश नहीं की तब तक सबकुछ सामान्य था।एंड्रॉइड स्टूडियो: ग्रैडल: त्रुटि: प्रतीक चर नहीं मिल सकता

मैंने एक बार ऐप चलाया और यह सामान्य रूप से चला गया, चित्र प्रदर्शित किया गया था। उसके बाद उसने मुझे कुछ पुस्तकालयों को आयात करने के लिए कहा और मैंने उन्हें आयात किया। उसके बाद मुझे अपनी गतिविधियों के लिए त्रुटियां मिलीं।

त्रुटियाँ तरह: इन पुस्तकालयों

Gradle: error: cannot find symbol variable activity_main 
Gradle: error: cannot find symbol variable button1 
Gradle: error: cannot find symbol variable button2 
Gradle: error: cannot find symbol variable textView 
Gradle: error: cannot find symbol variable secondActivity 

MainActivity में मैं आयात किया है:

import android.R; 
import android.content.Intent; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.Button; 

और secondActivity में इन:

import android.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

किसी को भी पता है कि यह कैसे तय करने के लिए?

संपादित करें: मैंने import android.R; हटा दिया और अब यह सामान्य रूप से काम करता है।

+0

ए ग्रैडल रेजिंक ने मेरे लिए यह तय किया। – akiraspeirs

उत्तर

53

आपको android.R आयात नहीं करना चाहिए। यह स्वचालित रूप से जेनरेट और पहचाना जाना चाहिए। This question में बहुत उपयोगी टिप्स हैं यदि आपको आयात हटाने के बाद R का संदर्भ देने में कुछ त्रुटि मिलती है। अगर उन त्रुटियों को दिखाई

कुछ बुनियादी कदम आयात को दूर करने, के बाद:

  • अपने निर्माण को साफ, यकीन है कि वहाँ कोई त्रुटि या अपने एक्सएमएल फाइल में लिखने की त्रुटियों
  • सुनिश्चित करें हैं तो पुनर्निर्माण
  • अपने संसाधन नाम [a-z0-9.] शामिल हैं। कुछ कारणों से राजधानियों या प्रतीकों की अनुमति नहीं है।
  • एक Gradle सिंक आप कई जायके उपयोग कर रहे हैं प्रदर्शन करना
+0

मैन्युअल रूप से "आयात com.your.app.package.name.R" घोषित करने के लिए "मेरे लिए प्रतीक चर नहीं मिल सकता" तय किया गया है। लेकिन जब मैंने एंड्रॉइड स्टूडियो और ग्रैडल में मुख्य ऐप प्रोजेक्ट में मॉड्यूल से क्लास की प्रतिलिपि बनाई थी, तो निर्माण करने में असफल रहा। लेकिन मैं पहले उपरोक्त विकल्पों को आजमाने का सुझाव दूंगा, क्योंकि इस त्रुटि के लिए यह संभावित मामला है। – TouchBoarder

+1

मुझे वर्तमान में इसी तरह की समस्या थी। समस्या यह थी कि मेरे प्रोजेक्ट में मेरे पास अधिक मॉड्यूल थे। जैसे 'com.packagename.app' मॉड्यूल और' com.packagename.library' मॉड्यूल। हालांकि दोनों, कक्षा और 'आर। स्ट्रिंग' संसाधन 'com.packagename.app' मॉड्यूल से थे, मैंने किसी भी तरह कक्षा में com.package.library.R' आयात किया था। किसी भी तरह एंड्रॉइड स्टूडियो इसे एक त्रुटि के रूप में नहीं पहचानता है और बिना किसी समस्या के ग्रैडल/सिंक मेरे प्रोजेक्ट का निर्माण करता है। लेकिन जब मैंने यूनिट टेस्ट ग्राडल बिल्ड चलाने की कोशिश की तो वर्णित त्रुटि के साथ असफल रहा। 'आयात com.packagename.library.R' को हटाकर मेरी समस्या हल हो गई। –

+0

नोट: अंडरस्कोर '_' का उपयोग संसाधन आईडी के –

19

(उपकरण> एंड्रॉयड> Gradle फ़ाइलें के साथ सिंक परियोजना के माध्यम से)?

-make sure the resource file is not declared/added both in only one of the flavors and in main.

उदाहरण: a_layout_file.xml फ़ाइल प्रतीक चर (रों) युक्त

src:

flavor1/res/लेआउट/(कोई फ़ाइल)

flavor2/res/लेआउट/a_layout_file.xml

मुख्य/res/लेआउट/a_layout_file.xml

इस सेटअप त्रुटि दे देंगे: प्रतीक चर नहीं मिल रहा है, इस वजह से संसाधन फ़ाइल केवल दोनों जायके या केवल मुख्य में में हो सकता है।

buildConfigField "String", "source", "play" 

आप की तरह ऊपर यह त्रुटि होने का कारण होगा अपने स्ट्रिंग की घोषणा हैं:

10

आप अपने प्रोजेक्ट में एक String निर्माण config क्षेत्र का उपयोग कर रहे हैं, तो क्या ऐसा मामला है।

<activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".ScanActivity"> 

    </activity> 
0

करें कि आप अपने AndroidManifest.xml फ़ाइल में MainActivity और .ScanActivity किया हुआ है: ठीक करने के लिए इसे बदलने के लिए है। उदाहरण के लिए मैंने कक्षा में एक विधि में स्थानीय रूप से एक टेक्स्टव्यू परिभाषित किया था और इसे किसी अन्य विधि में संदर्भित कर रहा था।

मैंने कक्षा परिभाषा के ठीक नीचे विधि के बाहर टेक्स्टव्यू परिभाषा को स्थानांतरित कर दिया ताकि अन्य विधि परिभाषा तक पहुंच सके, जिसने समस्या का समाधान किया।

0

सुनिश्चित करें कि आपके चर विधि है कि यह संदर्भित करने के लिए दायरे में हैं:

buildConfigField "String", "source", "\"play\"" 
0

सुनिश्चित करें कि आयातित आर दूसरे मॉड्यूल से नहीं है। मैंने एक मॉड्यूल से मुख्य परियोजना में कक्षा को स्थानांतरित कर दिया था, और आर मॉड्यूल से एक था।

संबंधित मुद्दे