2011-02-13 16 views
7

मैं इस पर अपने बालों को खींच रहा हूं।एंड्रॉइड इनपुट संवाद रिटर्न इनपुट मूल्य

मेरे पास एक ऐप है कि जब आप मेनू आइटम दबाते हैं, तो मैं इसे इनपुट अलर्ट संवाद दिखाना चाहता हूं। जब उपयोगकर्ता "ठीक" टैप करता है तो संवाद में संपादन टेक्स्ट में दर्ज किया गया पाठ गतिविधि में बाद में उपयोग करने के लिए वापस लौटाया जाना चाहता है।

तो मैं डाल सोचा:

name = input.getText().toString(); //input is an EditView which is the setView() of the dialog 

"ठीक" बटन काम करेगा की onClick अंदर लेकिन ऐसा नहीं है। ग्रहण मुझे बताता है कि मैं ऑनक्लिक के अंदर नाम सेट नहीं कर सकता क्योंकि यह अंतिम नहीं है, लेकिन अगर मैं नाम की परिभाषा को अंतिम रूप में बदलता हूं तो इसे स्पष्ट रूप से बदला नहीं जा सकता है और इसलिए ऑनक्लिक() के अंदर सेट नहीं किया जा सकता है।

String routeName = ""; 

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

     alert.setTitle("Title"); 
     alert.setMessage("Message"); 

     // Set an EditText view to get user input 
     final EditText inputName = new EditText(this); 
     alert.setView(inputName); 

     alert.setPositiveButton("Set Route Name", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      routeName = inputName.getText().toString(); 
      } 
     }); 

     alert.show(); 

मैं यहाँ वास्तव में कुछ बेवकूफ कर रही होगी, क्योंकि मैं चारों ओर उम्र के लिए googled और एक ही समस्या के साथ कोई और नहीं पाए गए हैं:

यहाँ इस बिट के लिए पूर्ण कोड है।

क्या कोई मुझे प्रबुद्ध कर सकता है?

अपने समय के लिए धन्यवाद,

InfinitiFizz

+0

कृपया कुछ और कोड पोस्ट करें! – user432209

+0

क्षमा करें! कोड के साथ अब मुख्य प्रश्न अपडेट किया गया। –

उत्तर

3

दरअसल, आप अपने onlcick, एक गुमनाम समारोह मुझे लगता है जो अंदर सिर्फ anythingy को नहीं मिल सकता है। आप क्या कर सकते हैं संदर्भ प्राप्त करें, और वहां से अपने विचार ढूंढें। यह कुछ इस तरह दिखेगा:

yourButton.setOnClickListener(new View.OnClickListener() { 
      public boolean onClick(View v) { 
       name = findViewById(R.id.yourInputId)).getText().toString(); 
       return true; 
     } 
); 

आप भी अपने श्रोता में v.getContext() फोन करके, v तर्क इस्तेमाल कर सकते हैं instace के लिए।

+0

उत्तर नैन के लिए धन्यवाद, लेकिन मैं "yourButton" कहां परिभाषित करूं? क्या यह "ठीक है" बटन है? क्योंकि ऐसा लगता है कि AlertDialog में उस बटन को बनाने के लिए एक विशिष्ट सेट पॉजिटिव बटन() विधि है। क्या आपका मतलब है कि मैं उस दृश्य में परिभाषित बटन के साथ संवाद के कस्टम संस्करण के लिए कस्टम दृश्य बना सकता हूं और उस बटन को अपने बटन को देख सकता हूं? क्षमा करें मैं अभी भी उचित एंड्रॉइड विकास के लिए काफी नया हूँ। –

+0

मुझे प्रश्न के अतिरिक्त नहीं देखा गया था, लेकिन इस मामले में यह दिखाने के लिए कुछ उदाहरण था। आप उस पहले भाग को अनदेखा कर सकते हैं और "setOnclickListener" भाग से पढ़ सकते हैं;) – Nanne

+0

मैंने यह करना शुरू कर दिया लेकिन अभी भी यह नहीं पता था कि सेटऑनक्लिक लिस्टनर से नाम परिवर्तनीय कैसे प्राप्त करें और इस समस्या को हल करने के लिए मैंने जो कुछ भी मतलब था किसी फ़ंक्शन में संवाद के परिणामस्वरूप आना और उस फ़ंक्शन को ऑनोजिटिव() श्रोता के अंदर बुलाया जाता है। –

2

आप routerName एक सदस्य चर बना सकते हैं।

+0

वाह! वह आसान था! धन्यवाद foobaa, लेकिन findViewById आदि का उपयोग कर @Nanne के तरीके से काम करने के लिए यह अच्छा/क्लीनर होगा? –

+0

ठीक है इस विधि के साथ समस्या यह थी कि शेष कोड चल रहा था, जबकि उपयोगकर्ता इनपुट टाइप कर रहा था क्योंकि संवाद असीमित हैं। मेरा समाधान ऐसा करना था जिसे मैंने नैन को जवाब दिया था। –

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