2011-07-12 2 views

उत्तर

102

जब आप setFlags का उपयोग करते हैं तो आप पुराने झंडे को बदल रहे हैं ... जब आप addFlags का उपयोग करते हैं तो आप नए झंडे लगा रहे हैं। याद रखें, एक झंडा सिर्फ एक पूर्णांक है जो दो की शक्ति है ... बाइनरी में, झंडे इस तरह दिखते हैं: 1, 10, 100, 1000, आदि ... (जो इस मामले में 1, 2, 4, 8) हैं । तो, addFlags| ऑपरेटर का उपयोग करके पारित पूर्णांक को जोड़ रहा है।

// example... 
// value of flags: 1 
intent.setFlags(2|4); 
// now flags have this value: 110 
intent.addFlags(8); 
// now flags have this value: 1110 
+0

यह कैसे संभव हो सकता है 'intent.setFlags (2 | 4);' 110 मूल्य –

+4

@ गोपालसिंहसिवी को बाइनरी में एलएसबी (कम से कम महत्वपूर्ण बिट) मानव पठनीय मूल्यों के लिए सबसे सही होगा। इसका मतलब है कि 110 में से 0 मूल्य 2^0 = 1 का प्रतिनिधित्व करता है। दूसरा मान 1 2^1 = 2 का प्रतिनिधित्व करता है और तीसरा मान 2^2 = 4 का प्रतिनिधित्व करता है। तो OR | का उपयोग कर 4 (100) और 2 (010) पर ऑपरेटर 110 – Patric

+0

यह विंडो.सेटफ्लैग/एडफ्लैग के साथ भ्रमित नहीं होना चाहिए जिसका इरादा तरीकों से अलग व्यवहार हो। – TheIT

8
intent.setFlags(int num); 

इस सेट झंडा नियंत्रण कैसे Intent.setflag को संभालने के लिए मुख्य रूप से घटक के प्रकार पर निर्भर निष्पादित किया जा रहा द्वारा Intent.It एक सिंगल स्टेटमेंट में एकाधिक कॉल चेनिंग के लिए एक ही मंशा वस्तु देता है।

intent.addFlags(int num); 

यह मौजूदा values.this साथ एक विशेष आशय करने के लिए अतिरिक्त झंडे को जोड़ने के लिए मदद करता है भी एक ही बयान में एकाधिक कॉल चेनिंग के लिए एक ही मंशा वस्तु देता है।

1
public Intent addFlags(int flags) { 
    mFlags |= flags; 
    return this; 
} 
public Intent setFlags(int flags) { 
    mFlags = flags; 
    return this; 
} 

संदर्भ के लिए, बस इसे स्रोत कोड से मिला।

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