2016-01-07 15 views
6

में दिखाई देते हैं मैं एक pojo वर्गएक अजीब क्षेत्र एंड्रॉयड स्टूडियो

रन इस कोड

Field[] fields = clazz.getDeclaredFields(); 

मैं Android Studio आईडीई के तहत एक क्षेत्र मिल गया है:

अपने प्रकार इंटरफ़ेस com.android.tools.fd.runtime.IncrementalChange है इसके नाम है $

मेरा एंड्रॉइड स्टूडियो संस्करण 2.0 पूर्वावलोकन 4

the pojo class which i definded by myself didn't have $change field

जब मैं ग्रहण में कोड चलाता हूं, तो यह सामान्य काम करता है।

फ़ील्ड कहां से आया? मैं इस क्षेत्र से कैसे बच सकता हूं, क्या Android Studio में कुछ सेटिंग है?

उत्तर

8

तत्काल रन को बंद करने के बजाय हम सिंथेटिक संशोधक जांच का उपयोग करके इस समस्या को हल कर सकते हैं। 'com.android.tools.fd.runtime.IncrementalChange' सिंथेटिक है इसलिए हम जांच सकते हैं कि क्षेत्र का उपयोग सिंथेटिक है या नहीं सिन्थेथेक विधि।

Field[] fields = objClass.getFields(); 
for (Field field : fields) { 
      String name = field.getName(); 
      Object value; 

      if(field.isSynthetic()){ 
       continue; 
      } 
      //add your code here 
      } 
+0

अच्छा काम! धन्यवाद –

+0

'मेरे लिए काम नहीं करता है। '' जावा (फील्ड फ़ील्ड: raw.getDeclaredFields()) { अगर (field.is सिंथेटिक()) { जारी रखें; } field.set पहुंच योग्य (सत्य); '' ' –

9

एंड्रॉइड स्टूडियो 2.0 में जोड़े गए इंस्टेंट रन फीचर का समर्थन करने के लिए यह फ़ील्ड जोड़ा जाता है, और यदि आप इंस्टेंट रन को बंद करते हैं तो दिखाई नहीं देगा।

+0

ग्रेट का समाधान! खोज त्वरित रन सेट करने में, एक चेकबॉक्स डिफ़ॉल्ट चेक किया गया है। जब मैंने इसे अनचेक किया, तो फ़ील्ड निराश हो गया! धन्यवाद! –

0

मुझे लगता है कि diordna जवाब सबसे अच्छा link .install रन एंड्रॉयड स्टूडियो नया कार्य है, मैं इसे बंद नहीं होगा।

मुझे अपना SDK पुस्तकालय में JsonTool link उपयोग करते हैं, जब मैं androidStudio2 के साथ अपने अनुप्रयोग चलाने .2 JsonTooll.objectToJson() मुझे एक बुरा JSON स्ट्रिंग देना, मैं कोड जोड़
if (name.contains("this$") || field.isSynthetic()) continue;

यह

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