2012-03-19 14 views
5

मेरे पास मेरे आवेदन में पांच संपादन टेक्स्ट हैं। मेरे पास "अगला" और "पिछला" नामक दो बटन भी हैं। अब मैं अगले और पिछले संपादन टेक्स्ट फ़ील्ड का चयन करना चाहता हूं जब मैं संबंधित बटन को गतिशील रूप से मेरे दृश्य के रूप में क्लिक करता हूं। क्या इसे करने का कोई तरीका है। अपने layout.xml मेंएक दृश्य में अगले और पिछले संपादन ग्रंथों का चयन कैसे करें

android:nextFocusLeft 

android:nextFocusRight 

android:nextFocusUp 

android:nextFocusDown 
अपने editText के गुणों में

की

+1

आप उपयोग नहीं कर सकते ** requestFocus() * * – ngesh

+0

क्या आपका मतलब है कि आप एक संपादन टेक्स्ट से फोकस को अगले/पिछले में बदलना चाहते हैं जब संबंधित बटन स्पर्श हो जाए? –

+0

@ रेतीले- सुझाव के लिए धन्यवाद। उपर्युक्त मेरा नमूना अनुप्रयोग है और मेरे वास्तविक प्रोजेक्ट में लगभग 50 संपादन टेक्स्ट फ़ील्ड हैं इसलिए प्रत्येक फ़ील्ड के लिए अनुरोध फ़ोकस करना इतना जटिल है। ऐसा करने का कोई आसान तरीका है। – Sniper

उत्तर

11
btnNext.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     int id = getCurrentFocus().getNextFocusDownId(); 
     if(id != View.NO_ID) { 
      findViewById(id).requestFocus(); 
      System.out.println("Next"); 
     } 
    } 
}); 

btnBack.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     int id = getCurrentFocus().getNextFocusUpId(); 
     if(id != View.NO_ID) { 
      findViewById(id).requestFocus(); 
      System.out.println("Back"); 
     } 
    } 
}); 

यह XML आप ध्यान सेट करने के लिए जहां है आदेश

<EditText 
    android:id="@+id/et1" 
    android:nextFocusDown="@+id/et2" 
    android:nextFocusUp="@+id/et2" 
    ....../> 

<EditText 
    android:id="@+id/et2" 
    android:nextFocusDown="@+id/et1" 
    android:nextFocusUp="@+id/et1" 
    ...../> 

संपादित

आप दृश्य गतिशील पैदा कर रहे हैं तो आप विधियों के नीचे का उपयोग करना चाहिए अगले फ़ोकस सेट करने

setNextFocusDownId(id) 
setNextFocusUpId(id); 
+0

मैं इसे एक्सएलएम कोड में उपयोग कर सकता हूं लेकिन मैं रन टाइम पर संपादन टेक्स्ट बना रहा हूं इसलिए मैं ऐसा नहीं कर सकता। कोई उपाय। – Sniper

+1

मैंने अपना उत्तर – Dharmendra

+0

अपडेट किया है धन्यवाद यह काम करता है। – Sniper

3

उपयोग करें।

उदा। android:nextFocusDown="@id/myNextEditText"

कैसे उपयोग करने के लिए यह कृपया का पालन this link.

+0

मैं अपने बटन क्लिक ईवेंट में इसका उपयोग कैसे कर सकता हूं। – Sniper

+0

कृपया मेरे अपडेट किए गए उत्तर की जांच करें, मैंने फ़ॉलो करने के लिए लिंक दिया है। या यदि आप अपने विचारों को गतिशील रूप से उत्पन्न कर रहे हैं, यानी .java फ़ाइलों के माध्यम से, तो आप मेरे दूसरे उत्तर का संदर्भ ले सकते हैं। – Rajkiran

1

प्रयास करें -

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn_next : 
      if(editText1.hasFocus()){ 
       editText2.requestFocus(); 
      }else if(editText2.hasFocus()){ 
       editText3.requestFocus(); 
      } 
      break; 
     case R.id.btn_previous : 
      if(editText2.hasFocus()){ 
       editText1.requestFocus(); 
      }else if(editText3.hasFocus()){ 
       editText2.requestFocus(); 
      } 
      break; 
    } 
} 
+0

गलत वाक्यविन्यास (संपादित करेंक्स्ट 1!। हसफोकस()) यह होना चाहिए (! संपादित करें टेक्स्ट 1.hasFocus())। इससे मदद नहीं मिलेगी। आपके तर्क के मुताबिक यह केवल edittext1 और edittext2 – Dharmendra

+0

पर ध्यान केंद्रित करेगा, मुझे बताने के लिए धन्यवाद। वह बिल्कुल एक टाइपो (और कॉपी पेस्ट) था। यह वास्तव में एक वाक्यविन्यास त्रुटि है। संपादित। – Rajkiran

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