2012-10-23 11 views
8

Mam kilka obiektów EditText z tekstem w środku. Chcę, aby po raz pierwszy w EditText skupił się na usunięciu tekstu, ale tylko za pierwszym razem.EdycjaWyczyść tekst na pierwszym fokusie - Android

Jak mogę to zrobić?

Oto przykład: Mam EditText o nazwie SomeThing z tekstem "someText" w nim. , gdy użytkownik dotknie SomeThing po raz pierwszy chcę, aby "someText" został usunięty. więc załóżmy, że tekst został usunięty, a teraz użytkownik wpisał swój własny tekst, tym razem "someOtherText", a EditText stracił fokus w przypadku niektórych innych EditText. Tym razem, gdy użytkownik kliknie SomeThing, "someOtherText" nie zostanie usunięty, ponieważ jest to drugi raz, gdy zostanie ustawiony.

+0

Pierwszy raz oznacza, po raz pierwszy otworzyć aplikację lub zainstalować aplikację? – Sieryuu

+0

Mówię o tym, że po raz pierwszy obiekt editText się skupia. –

Odpowiedz

2

Jeśli szukasz sposobu, aby dodać zastępczy dla EditText, wystarczy dodać android:hint = 'some text' do odpowiedniego pliku XML lub wywołać metodę setHint('some text') na EditText.

W przeciwnym razie można użyć parametru OnFocusChangeListener(), aby odpowiedzieć na zdarzenie z ustawieniem ostrości. Aby sprawdzić, czy jest to pierwszy raz, aby skupić się na EditText, użyj innej zmiennej Boolean (np. isFirstTimeGetFocused) i zainicjuj ją na true w metodzie onCreate(). Po ustawieniu ostrości na EditText ustaw isFirstTimeGetFocused na false;

editText.setOnFocusChangeListener(new OnFocusChangeListener() { 
@Override 
public void onFocusChange(View v, boolean hasFocus) { 
    if(hasFocus && isFirstTimeGetFocused){ 
     editText.setText(""); 
     isFirstTimeGetFocused = false; 
    } 
}); 
+0

Uwaga: jeśli to pole jest pierwszym w hierarchii, powinieneś ustawić opcję focusable i focusableintouchwode w grupie widoku root, aby uniknąć skupienia się na rozpoczęciu aktywności. –

Powiązane problemy