2012-01-26 5 views
6

मेरी कक्षा की विधि OnCreate() में मैं बटन का एक ग्रिड बनाने के लिए, और उन्हें उदाहरण के लिए पहचान करने के लिए, टैग दे:findViewWithTag द्वारा बटन पुनर्प्राप्त नहीं कर रहा है?

button.setTag("one four"); 

यह ठीक काम कर रहा है। अब मैं एक विधि के भीतर एक नया अस्थायी बटन बनाना चाहते हैं, और मैं इस कोड का उपयोग कर रहा हूँ:

String s = "one four"; 
Object o = s; 
View view = new View(this); 
Button button = (Button)view.findViewWithTag(o); 

लेकिन बटन हमेशा "शून्य" के रूप में बाहर आता है। और मुझे नहीं पता क्यों।

+0

ठीक है, आपको पहले अपने दृश्य पर उस टैग के साथ एक बटन जोड़ना होगा .. – Cata

उत्तर

8

आप से पहले view.findViewWithTag(o);

view.addChild(button); कॉल करना होगा और अगर आप ऐसा करने के लिए इस Object o = s;, view.findViewWithTag(s); भी ऐसा ही होगा की आवश्यकता नहीं है।

View view = new View(this); - आप View का एक नया उदाहरण बनाते हैं। ऑब्जेक्ट view में कोई बच्चा नहीं है। आपको लेआउट से findViewWithTag(s) विधि को कॉल करना होगा जिसमें आपकी Button ऑब्जेक्ट शामिल है।

+0

इस तरह: बटन knop = view.addChild (बटन) view.findViewWithTag (o); ? – Mavix

+0

संख्या। button.setTag (रों); view.addChild (बटन); बटन बटन = (बटन) view.findViewWithTag (ओं); – Natali

+0

जब मैं ऐसा करता हूं, तो मुझे त्रुटि मिलती है: बटन को एक चर के लिए हल नहीं किया जा सकता है। और मैंने बटन और दृश्य दोनों आयात किए हैं। – Mavix

1

ऑब्जेक्ट वेरिएबल को स्ट्रिंग असाइन करने का प्रयास न करें और टैग को सीधे अपनी स्ट्रिंग के रूप में सेट करें।

0

मैविक्स, findViewWithTag सभी बच्चे के विचारों को पार करता है और ViewGroup में ठीक काम करता है। इसे आज़माएं:

// after button.setTag("one four"); 

ViewGroup v = (ViewGroup) findViewById(R.id.myFirstLayoutIdInXmlLayoutFile); 
Button b = (Button) v.findViewWithTag("one four"); 
0

मुझे भी यही संदेह था। मेरी स्थिति में, मेरे पास मुख्य लेआउट और माध्यमिक लेआउट (मुख्य के अंदर) है - दोनों रिलेटिव लयआउट थे - और मैं उन घटकों को प्राप्त करना चाहता हूं जिन्हें मैंने स्क्रीन पर जोड़ा था।

लेकिन मुझे गतिशील कुंजी (जिसे दोहराया जा सकता है) का उपयोग करना था और वे अद्वितीय पैरामीटर थे जिन्हें मैं घटकों की पहचान करने के लिए उपयोग कर सकता था।

नतालि की तरह, response में, मैं घटकों में "TAG" का उपयोग करता हूं और मेरे लिए काम करता हूं। नीचे देखें (उदाहरण के रूप में बटन का उपयोग करके):

चरण 1: बटन-प्रकार चर घोषित करें। Button btn = new Button(this); किसी भी कुंजी सेट: // यह मेरा गतिविधि

चरण 2 के संदर्भ है। String any_key = "keyToGetButton";

चरण 3: सेट बटन (चरण 2 में सेट कुंजी) अपने बटन पर सेट करें। btn.setTag(any_key);

चरण 4: टैग द्वारा अपना बटन प्राप्त करें (उदाहरण के लिए, अन्य विधि में)। Button button = (Button) your_layout_where_is_button.findViewWithTag(any_key);

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