2013-04-23 5 views
6

मैं स्क्रीन पर प्रदर्शित निम्न चीज़ें हैं:एंड्रॉयड - स्पिनर चयन के बाद EditText पर ध्यान केंद्रित करने के लिए सेट

EditText Forename 
Spinner gender selection (Male | Female) 
EditText Email 

जब आवेदन पहली शुरू की है, मैं चाहता हूँ फोकस पूर्व नाम EditText पर स्थापित किया जाना। फिर स्पिनर में "पुरुष" या "महिला" का चयन किया गया है, मैं स्पिनर के नीचे स्थित ईमेल एडिटटेक्स्ट पर फ़ोकस सेट करना चाहता हूं।

मैं setOnItemSelectedListener का इस्तेमाल किया है ईमेल EditText पर requestFocus स्थापित करने के लिए है, लेकिन समस्या यह है कि यह स्वचालित रूप से ध्यान केंद्रित पर इस EditText जब भी मैं आवेदन शुरू सेट है। ऐसा इसलिए होता है क्योंकि डिफ़ॉल्ट रूप से स्पिनर पहला चयन प्रदर्शित करता है जो इस मामले में "पुरुष" है और इसलिए यह सोचता है कि एक चयन पहले से ही किया जा चुका है और ईमेल फ़ील्ड पर फ़ोकस सेट करता है।

मैं पहली बार चयन कोई आपत्ति नहीं है पहले से ही डिफ़ॉल्ट रूप से स्पिनर में चयन किया जाना लेकिन अगर मैं किसी भी तरह रद्द कर सकते थे requestFocus पूर्व नाम EditText पर स्थापित किया जाना शुरू में है कि बहुत अच्छा होगा।

एक्सएमएल:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/LinearLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <EditText 
     android:id="@+id/ForenameForm" 
     android:layout_width="285dp" 
     android:layout_height="65dp" 
     android:hint="@string/forenameHint" 
     android:lines="1" 
     android:singleLine="true" 
     android:textSize="20sp" > 
    </EditText> 


    <Spinner 
     android:id="@+id/SpinnerGender" 
     android:spinnerMode="dialog" 
     android:textSize="30sp" 
     android:layout_width="285dp" 
     android:layout_height="60dp" 
     android:prompt="@string/spinnerGender" 
     android:entries="@array/genderList"> 

    </Spinner> 

    <EditText 
     android:id="@+id/EmailForm" 
     android:layout_width="285dp" 
     android:layout_height="65dp" 
     android:hint="@string/emailHint" 
     android:lines="1" 
     android:singleLine="true" 
     android:textSize="20sp" > 
    </EditText> 

</LinearLayout> 

गतिविधि वर्ग:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final EditText forename=(EditText)findViewById(R.id.ForenameForm); 
     forename.requestFocus(); 

     final EditText email=(EditText)findViewById(R.id.EmailForm); 

     Spinner spinner=(Spinner)findViewById(R.id.SpinnerGender); 
     spinner.setFocusable(true); 
     spinner.setFocusableInTouchMode(true); 


     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
     { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       email.requestFocus();    
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 

      }    
     }); 
    } 

उत्तर

7

कैसे इस समाधान के बारे में।

define a boolean flag and set it default false. 

in oncreate set the focus of forname 

in setOnItemSelectedListener 
    if flag is false then set flag true 
    else focus email 

तो अपने कोड की तरह

boolean flag = false; 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final EditText forename=(EditText)findViewById(R.id.ForenameForm); 
     forename.requestFocus(); 

     final EditText email=(EditText)findViewById(R.id.EmailForm); 

     Spinner spinner=(Spinner)findViewById(R.id.SpinnerGender); 
     spinner.setFocusable(true); 
     spinner.setFocusableInTouchMode(true); 


     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
     { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       // changes here 
       if(flag == false) 
        flag = true; 
       else 
        email.requestFocus();    
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 

      }    
     }); 
    } 
+0

एकदम सही है कि हो जाएगा! आपकी मदद के लिए धन्यवाद, StinePike – Alex

+0

और आपका स्वागत है :) – stinepike

+0

क्या यह वास्तव में 'onItemSlected' को संभालने का एंड्रॉइड तरीका है? मैं चुने गए आइटमों के साथ एक गतिविधि कैसे शुरू कर सकता हूं? –

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