2012-03-19 12 views
5

Mam pięć edycji tekstu w mojej aplikacji. Mam też dwa przyciski o nazwach "Następny" i "Poprzedni". Teraz chcę wybrać kolejne i poprzednie pola edycji, gdy kliknę odpowiednie przyciski z mojego widoku dynamicznie. Czy jest jakikolwiek sposób to zrobić?Jak wybrać następny i poprzedni Edytuj teksty w widoku

+1

Nie możesz używać ** requestFocus() * * – ngesh

+0

Czy chcesz zmienić ostrość z jednego EditText na następny/poprzedni po dotknięciu odpowiedniego przycisku? –

+0

@ sandy- Dzięki za sugestię. Powyższe jest moją przykładową aplikacją, aw moim prawdziwym projekcie znajduje się prawie 50 pól tekstowych, dzięki czemu skupienie się na żądaniu dla każdego pola jest tak złożone. Czy istnieje prosty sposób na zrobienie tego. – Sniper

Odpowiedz

11
btnNext.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     int id = getCurrentFocus().getNextFocusDownId(); 
     if(id != View.NO_ID) { 
      findViewById(id).requestFocus(); 
      System.out.println("Next"); 
     } 
    } 
}); 

btnBack.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     int id = getCurrentFocus().getNextFocusUpId(); 
     if(id != View.NO_ID) { 
      findViewById(id).requestFocus(); 
      System.out.println("Back"); 
     } 
    } 
}); 

Jest to XML, gdzie trzeba ustawić ostrość zamówienie:

<EditText 
    android:id="@+id/et1" 
    android:nextFocusDown="@+id/et2" 
    android:nextFocusUp="@+id/et2" 
    ....../> 

<EditText 
    android:id="@+id/et2" 
    android:nextFocusDown="@+id/et1" 
    android:nextFocusUp="@+id/et1" 
    ...../> 

Edit

Jeśli tworzysz widok dynamiczny należy użyć poniższych metod, aby ustawić kolejny Fokus

setNextFocusDownId(id) 
setNextFocusUpId(id); 
+0

Mogę użyć tego w kodzie XLM, ale tworzę tekst edycji w czasie wykonywania, więc nie mogę tego zrobić. Jakieś sugestie. – Sniper

+1

Zaktualizowałem moją odpowiedź – Dharmendra

+0

Dzięki to działa. – Sniper

3

użycie Marka

android:nextFocusLeft 

android:nextFocusRight 

android:nextFocusUp 

android:nextFocusDown 

w atrybuty EditText w swojej layout.xml.

np. android:nextFocusDown="@id/myNextEditText"

Aby uzyskać więcej informacji o tym, jak z niego korzystać należy postępować this link.

+0

Jak mogę tego użyć w zdarzeniu kliknięcia przycisku. – Sniper

+0

Sprawdź moją zaktualizowaną odpowiedź, podaję link do śledzenia. Lub jeśli generujesz swoje widoki dynamicznie, tj. Za pomocą plików .java, to możesz odnieść się do mojej drugiej odpowiedzi. – Rajkiran

1

Try -

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn_next : 
      if(editText1.hasFocus()){ 
       editText2.requestFocus(); 
      }else if(editText2.hasFocus()){ 
       editText3.requestFocus(); 
      } 
      break; 
     case R.id.btn_previous : 
      if(editText2.hasFocus()){ 
       editText1.requestFocus(); 
      }else if(editText3.hasFocus()){ 
       editText2.requestFocus(); 
      } 
      break; 
    } 
} 
+0

Niewłaściwa składnia (editText1! .hasFocus()) powinna być (! EditText1.hasFocus()). To nie pomoże. zgodnie z twoją logiką skupi się tylko na edittext1 i edittext2 – Dharmendra

+0

Dzięki, że mnie powiadomiłeś. To był absolutnie literówka (i wklej kopiuj). W rzeczywistości jest to błąd składniowy. Edytowane. – Rajkiran

Powiązane problemy