avere il vostro Activity
implementare OnFocusChangeListener()
se si desidera un uso fattorizzata di questa interfaccia, esempio:
public class Shops extends AppCompatActivity implements View.OnFocusChangeListener{
Nel vostro OnCreate
è possibile aggiungere un listener per esempio
editTextReaserch.setOnFocusChangeListener(this);
editTextMyWords.setOnFocusChangeListener(this);
editTextPhone.setOnFocusChangeListener(this);
quindi Android Studio ti chiederà di aggiungere il metodo dall'interfaccia, accettalo ... i t sarà come:
@Override
public void onFocusChange(View v, boolean hasFocus) {
// todo your code here...
}
e come hai un codice fattorizzata, ti basta avere a che fare:
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
editTextReaserch.setText("");
editTextMyWords.setText("");
editTextPhone.setText("");
}
if (!hasFocus){
editTextReaserch.setText("BlaBlaBla");
editTextMyWords.setText(" One Two Tree!");
editTextPhone.setText("\"your phone here:\"");
}
}
tutto quello che il codice nel !hasFocus
è per il comportamento del oggetto che perde attenzione, che dovrebbe fare il trucco! Ma attenzione che in tale stato, il cambiamento di messa a fuoco potrebbe sovrascrivere le voci dell'utente!
+1 - ma vale la pena notare che se la modifica del testo è in una lista, ogni premuto il tasto si tradurrà nella casella di perdere e ottenere attenzione. Vedi questa soluzione per tenere traccia della casella attualmente focalizzata: http://stackoverflow.com/questions/9527067/android-edittext-in-listview-loses-focus-on-calling-notifydatachanged – bsautner
41 upvotes per una risposta che dice sostanzialmente "leggi il valore 'hasFocus'". La verità è che questo è veramente difficile da far perdere a editText il focus e ci sono tonnellate di domande senza risposta a riguardo. –
Dove posso aggiungere il codice che mostri? Se lo metto così com'è in "onCreate", l'app si arresta in modo anomalo – Jona