2013-06-18 4 views
0

У меня есть 3 EditTexts в строке, но на 3 разных макетах. Я устанавливаю их так, когда я нажимаю кнопку ввода, он перейдет к следующему EditText из этой строки на следующем макете. Проблема в том, что когда я нажимаю кнопку ввода из первого EditText в строке, она переходит в третью. в-третьих, он переходит ко второму, а от второго к первому. Это похоже на то, что я нажимаю ввод на первом EditText, он переходит ко второму, а затем к третьему тому же входу. Как я могу остановить его от прыжка, например, с первого EditText на второй, а затем на третье нажатие клавиши ввода?На enter, перейти к следующему выпуску EditText

Вот некоторые из моего кода:

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; 
    } 
}); 

Это как мне нужно какое-то break функции, лол. Как я могу это исправить? Спасибо и хорошо провести день/ночь!

Fixed делая это:

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, есть ли у вас в корневом порядке? , если это не работает, вы можете использовать

android:nextFocusDown 

установить порядок

+0

Нет, они не определены, они создаются динамически. Проблема заключается не в порядке фокусировки, а в том, что он дважды вызывает мой OnKeyListener. Поэтому он переходит ко второму EditText, но затем снова вызывает слушателя и переходит к третьему EditText, все в одном Enter. Я думаю, это проблема, но я не знаю, как ее исправить. –

+0

Вы пробовали разрешить андроид решить, а не форсировать поведение? – user1634451

0

Почему бы вам не использовать:

et1.requestFocus(); 

Вместо

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

Потому что они созданы динамически :) Там нет et1, я создаю неопределенное число et1, et2 и et3's.I Исправлена ​​проблема, я буду редактировать и писать исправление, но теперь я наткнулся на более старую проблему, которую я могу Нет. –

Смежные вопросы