2009-11-25 11 views
8

मैं एक साधारण कैलकुलेटर एप्लिकेशन (3 संपादन बॉक्स और कुछ बटन के साथ पूर्ण लेआउट का उपयोग करके) लिख रहा हूं, जिसमें दो इनपुट टेक्स्ट बॉक्स और आउटपुट बॉक्स हैं।एक से टेक्स्ट फोकस को दूसरे टेक्स्ट में संपादित करें

input1 = (EditText) findViewById(R.id.input1); 
input2 = (EditText) findViewById(R.id.input2); 
अब एक बार उपयोगकर्ता

इनपुट 1 में कुछ numerics प्रवेश करती है और प्रेस '+', अब मैं इनपुट 2 करने के लिए इनपुट 1 से फोकस शिफ्ट करना चाहते हैं। मैं उसे कैसे कर सकता हूँ?

मैं '+'

onClick(View arg0){ 
    operator.setText("+"); 

    //Move focus from input1 to input2 
    input1.clearFocus(); 
    input2.setNextFocusDownId(input2.getId()); 
} 

की कुंजी दबाने पर नीचे कोड की कोशिश की लेकिन यह काम नहीं कर रहा है .. आप कृपया मुझे इस पर मदद कर सकते हैं?

+2

अच्छी तरह से, मुझे जवाब मिला, हम बस input2.requestfocus() को कॉल कर सकते हैं; Foucus बदलने के लिए । – Vamsi

+0

यदि आपको टेक्स्टवॉचर में इसका उपयोग करने की आवश्यकता है, और आपको इसे सामान्यीकृत करने की आवश्यकता है, जिसका अर्थ है कि आपको अनुरोध ऑब्जेक्ट कॉल करने के लिए विशिष्ट ऑब्जेक्ट का उपयोग नहीं करना है। क्या आपके पास इसका उत्तर है? – antonio081014

उत्तर

24

ठीक है, मुझे जवाब मिला: हम फोकस बदलने के लिए बस input2.requestFocus(); पर कॉल कर सकते हैं।

0

[वैसे, आप AbsoluteLayout का उपयोग कर से बचने के लिए चाहते हैं -। यह पदावनत है, और हटाया जा सकता है]

इसके बजाय onClick का उपयोग करने का

, तो आप कार्रवाई एक KeyListener के OnKeyDown पद्धति में भी हो करना चाहते हैं।

देखें: setKeyListener

तो फिर तुम KeyEvent के

KeyEvent.getAction() == KeyEvent.KEYCODE_PLUS 
2

के साथ महत्वपूर्ण जांच कर सकते हैं इस प्रयास करें:

input1.setNextFocusDownId(input2.getId());

आप इनपुट 2 की प्रयोग कर रहे हैं, और मुझे लगता है कि आप अनुमान लगा इनपुट 1 से इनपुट 2 में जाना चाहते हैं।

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