Ho le seguenti voci visualizzate sullo schermo:Android - impostare lo stato attivo su EditText dopo la selezione Spinner
EditText Forename
Spinner gender selection (Male | Female)
EditText Email
Quando l'applicazione viene lanciata, voglio l'attenzione da impostare sul Forename EditText. Quindi, dopo che "Maschio" o "Femmina" sono stati selezionati nello Spinner, , voglio che lo stato attivo sia impostato su Email EditText che si trova sotto lo spinner.
ho usato setOnItemSelectedListener
per impostare il requestFocus
sul EditText e-mail, ma il problema è che imposta automaticamente la messa a fuoco su questo EditText ogni volta che avviare l'applicazione. Questo accade perché per impostazione predefinita lo spinner visualizza la prima selezione che in questo caso è "Maschio" e quindi pensa che sia già stata effettuata una selezione e imposta l'attenzione sul campo Email.
non mi dispiace la prima selezione ad essere già selezionato nella filatore di default ma se potessi in qualche modo ignorare l'requestFocus
da impostare sul Forename EditText inizialmente che sarebbe grande.
XML: classe
<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>
attività:
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) {
}
});
}
che è perfetto! Grazie per il vostro aiuto, StinePike – Alex
E siete i benvenuti :) – stinepike
È davvero il modo Android di gestire 'onItemSelected'? Come posso iniziare un'attività con elementi non selezionati? –