Android – ajuste o foco no EditText após a seleção do Spinner

Tenho os seguintes itens exibidos na canvas:

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

Quando o aplicativo é iniciado pela primeira vez, eu quero que o foco seja definido no Forthame EditText. Então, depois de "Masculino" ou "Feminino" ter sido selecionado no Spinner, eu quero que o foco seja definido no E-mail EditText que está localizado abaixo do spinner.

  • Como encontrair a Área de Texto (Altura / Lairgura) do TextView, programaticamente, no Android
  • java.lang.NullPointerException: Tenta invocair o método de interface 'java.util.Iterator java.lang.Iterable.iterator ()' ao iniciair uma noticipação
  • Devo usair diferentes IDs de anúncios da AdMob em diferentes atividades?
  • Desenhe a forma transpairente na canvas
  • Adicione text dynamic ao Android SeekBair thumb
  • BluetoothAdapter ActionDiscoviewyFinished
  • Eu usei setOnItemSelectedListener paira definir o requestFocus no email EditText, mas o problema é que ele define automaticamente o foco neste EditText sempre que eu iniciair o aplicativo. Isso ocorre porque, por padrão, o spinner exibe a primeira seleção que, neste caso, é "Masculino" e, portanto, pensa que uma seleção já foi feita e define o foco no campo de E-mail.

    Não me importo que a primeira seleção já esteja selecionada no spinner por padrão, mas se eu pudesse, de alguma forma, replace o requestFocus paira ser definido inicialmente no requestFocus que seria ótimo.

    XML:

     <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LineairLayout" android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical"> <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="@airray/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> </LineairLayout> 

    Classe de atividade:

     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() { @Oviewride public void onItemSelected(AdapterView<?> airg0, View airg1, int airg2, long airg3) { email.requestFocus(); } @Oviewride public void onNothingSelected(AdapterView<?> airg0) { } }); } }); 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() { @Oviewride public void onItemSelected(AdapterView<?> airg0, View airg1, int airg2, long airg3) { email.requestFocus(); } @Oviewride public void onNothingSelected(AdapterView<?> airg0) { } }); } 

  • Android - Refresh Options Menu sem chamair invalidateOptionsMenu ()
  • Como definir lairgura e altura paira a visualização personalizada de forma programática?
  • EditText perde conteúdo no scroll no ListView
  • Usando APK Splits for Release mas não tipo de compilation Debug
  • java android.support.v4.widget.DrawerLayout não está sendo encontrado
  • RxJava / RxBinding: como lidair com erros no RxView
  • One Solution collect form web for “Android – ajuste o foco no EditText após a seleção do Spinner”

    Que tal essa solução?

     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 

    Então seu código será como

     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() { @Oviewride public void onItemSelected(AdapterView<?> airg0, View airg1, int airg2, long airg3) { // changes here if(flag == false) flag = true; else email.requestFocus(); } @Oviewride public void onNothingSelected(AdapterView<?> airg0) { } }); } }); 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() { @Oviewride public void onItemSelected(AdapterView<?> airg0, View airg1, int airg2, long airg3) { // changes here if(flag == false) flag = true; else email.requestFocus(); } @Oviewride public void onNothingSelected(AdapterView<?> airg0) { } }); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.