2013-06-18 3 views
0

3 개의 다른 레이아웃이 있지만 한 행에 3 개의 EditText가 있습니다. 나는 그들을 입력 할 때 입력을 클릭하면 다음 레이아웃에서 그 행의 다음 EditText로 이동합니다. 문제는 그 행의 첫 번째 EditText에서 엔터를 클릭하면 세 번째로 이동한다는 것입니다. 세 번째로 두 번째로 이동하고 두 번째에서 첫 번째로 이동합니다. 첫 번째 EditText에서 Enter 키를 누르고 두 번째 키로 이동 한 다음 세 번째 키로 이동합니다. 어떻게 내가 첫 번째 EditText에서 두 번째로, 그리고 세 번째로 Enter 키를 누를 때 점프하는 것을 멈출 수 있습니까?입력시 다음 EditText 문제로 건너 뜁니다.

여기 내 코드의 일부입니다 : 내가 break 기능의 일종이 필요한 것처럼

et.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v1, int keyCode, KeyEvent KEYCODE_ENTER) { 
     l2.getChildAt(localizarer).requestFocus(); 
     return true; 
    } 
}); 

et2.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v2, int keyCode, KeyEvent KEYCODE_ENTER) { 
     l3.getChildAt(localizarer).requestFocus(); 
     return true; 
    } 
}); 

et3.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v3, int keyCode, KeyEvent KEYCODE_ENTER) { 
     l1.getChildAt(localizarer).requestFocus(); 
     return true; 
    } 
}); 

그건, 롤. 어떻게 해결할 수 있습니까? 감사합니다. 좋은 하루/밤을 보내십시오! 이 수행하여 고정

:

et.setOnKeyListener(new OnKeyListener() { 

    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     // If the event is a key-down event on the "enter" button 
     if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
        (keyCode == KeyEvent.KEYCODE_ENTER)) 
     { 
      // Perform action on key press 
      l2.getChildAt(localizarer).requestFocus(); 
      return true; 
     } 
     return false; 
    } 
}); 

하지만 지금 이전 문제가 다시, 그것은 대신 레이아웃에 첫 번째 자식에가는 edittexts 내 두 번째 행에 점프는 두 번째로 이동을 ..

+0

아마 당신은해야 당신의 창조 루틴을 제공하십시오. – AlexS

+0

나는 여기에있다 : http://stackoverflow.com/questions/17171822/getchildat-getting-it-wrong. onKeyListeners를 모든 내 et에 배치했을 때 작동하기 시작했으나 onkeylisteners를 수정 한 후 첫 번째 자식을 감지하지 못하고 한 행을 다시 시작했습니다. –

+0

페이지를 찾을 수 없습니다. – AlexS

답변

0

xml에 정의 된 편집 텍스트에 해당 텍스트가 포함되어 있습니까? 그건 당신이 순서

+0

아니요, 정의되지 않았습니다. 동적으로 생성됩니다. 문제는 포커스 순서가 아니라 내 OnKeyListener를 두 번 호출한다는 사실입니다. 두 번째 EditText로 이동 한 후 다시 Listener를 호출하고 세 번째 EditText, 모두 하나의 엔터 키를 입력하십시오. 나는 이것이 문제라고 생각하지만 그것을 고치는 방법을 모른다. –

+0

행동을 강요하는 대신 안드로이드가 결정하도록 노력 했습니까? – user1634451

0

을 설정

android:nextFocusDown 

을 사용할 수 있습니다 작동하지 않을 경우 왜 사용하지 않는 :

et1.requestFocus(); 

대신

l1.getChildAt(localizarer).requestFocus(); 
+0

동적으로 생성 되었기 때문에 et1이 없습니다. et1, et2 및 et3의 정의되지 않은 숫자가 생성됩니다. 문제를 해결하고 수정할 것이지만 지금은 이전의 문제를 발견했습니다. 알아 내지 마 .. –

관련 문제