2013-01-23 19 views
14

मैं एंड्रॉइड के लिए बहुत नया हूं और मैं इस example का पालन कर रहा हूं।getActivity() जहां इसे परिभाषित किया गया है?

कोड का कहना है हम एक संवाद बॉक्स प्राप्त करने के लिए निम्न चरणों का कार्य करना होगा:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

// 2. Chain together various setter methods to set the dialog characteristics 
builder.setMessage(R.string.dialog_message) 
     .setTitle(R.string.dialog_title); 

// 3. Get the AlertDialog from create() 
AlertDialog dialog = builder.create(); 

लेकिन जहां करता getActivity() विधि परिभाषित किया गया है?

मुझे वह विधि नहीं मिल रही है।

+0

एक विधि बुला के बीच अंतर पता करने के लिए इस तरह 'this.getActivity()' कॉल करने जैसा ही है, इसलिए 'इस' उद्देश्य यह है कि की जरूरत है विधि उपलब्ध है। इस मामले में – JDx

+0

, यह एक टुकड़े में – njzk2

उत्तर

38

getActivity() विधि गतिविधि का संदर्भ देता है। आप इसके बजाय YourActivityName.this का उपयोग कर सकते हैं।

विधि getActivity() आमतौर पर टुकड़ों में उपयोग की जाती है ताकि वे उस गतिविधि के संदर्भ को प्राप्त कर सकें जिसमें उन्हें डाला जाता है या फुलाया जाता है।

जैसे

AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this); 

या आप खुद भी

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

इच्छा कसरत अपनी गतिविधि में कोड लिख रहे हैं अगर। कृपया किसी भी संदेह से पूछने के लिए स्वतंत्र महसूस करें

+6

'YourActivityName.this' –

+0

मुझे कोई अपवाद नहीं मिल रहा है। क्या अलर्टबॉक्स को प्रदर्शित करने के लिए बुलाए जाने के लिए कोई विधि आवश्यक है? – sriram

+1

आपको संवाद कॉल करना चाहिए। शो() – Aram

0

यह आलेख वर्णन एक Fragment में एक AlertDialog कैसे बनाते हैं। Fragments में, आप getActivity() विधि को कॉल करके संबंधित Activity प्राप्त कर सकते हैं। लेकिन आपके मामले में मुझे लगता है कि आप इसे Activity में कर रहे हैं। इसलिए आपको getActivity() पर कॉल करने की आवश्यकता नहीं है। बस this

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
0

getActivity का उपयोग(); यदि आप अपनी गतिविधि में संवाद दिखाना चाहते हैं, तो एंड्रॉइड फ्रैगमेंट का एक तरीका है, getActivity() की बजाय अपनी गतिविधि के this को पास करें।

0

getActivity() आपके द्वारा विस्तारित सुपर क्लास गतिविधि का सदस्य तरीका है। यह गतिविधि कक्षा में ही परिभाषित किया गया है। वास्तव में onCreate(), onPause() और अन्य सभी फ़ंक्शंस स्वयं माता-पिता गतिविधि कक्षा में भी परिभाषित किए गए हैं।

1

निर्माता AlertDialog.BuilderContext पैरामीटर की अपेक्षा करता है। ContextActivity, Service आदि से पहुंच योग्य है, क्योंकि वे सभी extendContext, और this के रूप में पारित किया जा सकता है।

विधि getActivity() घोषित किया गया है क्योंकि अन्य ने Fragment कक्षा में उल्लेख किया है।

+0

हमम मैंने अपनी 'MyActivity.this' कोशिश की लेकिन यह काम नहीं करता है। ध्यान दें कि मैं 'बटन' पर 'setOnClickListener' के अंदर हूं। – sriram

2

नया अलर्टडिअलॉग.बिल्डर() को इनपुट पैरामीटर के रूप में संदर्भ की आवश्यकता है। तो

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this); 
0

मुझे बिल्कुल वही समस्या थी और आखिर में मैंने पाया कि मुझे वास्तव में क्या संदेह है ... सीधे शब्दों में जोड़ें:

dialog.show(); 

... और देखा। वो रहा। आश्चर्य है कि यह मूल उदाहरण में क्यों नहीं बताया गया है ??

0

अद्यतन एंड्रॉयड एपीआई स्तर 23.

उपयोग getActivity() के बजाय getContext()

0

// 1. का दृष्टांत अपने निर्माता के साथ एक AlertDialog.Builder

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this); 

// 2. श्रृंखला एक साथ विभिन्न सेटर तरीकों संवाद विशेषताओं

builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title); 

// 3. स्थापित करने के लिए जाओ AlertDialog से (बनाने)

AlertDialog dialog = builder.create(); 

// 4. दिखाएँ AlertDi alog

dialog.show();