Android setOnEditorActionListener () не спрацоўвае

Я спрабую ўсталяваць слухач EditText пры ўваходзе кнопкі будзе pressed.But гэта не спрацоўваць. Я адчуў гэта на LG Nexus 4 з Android 4.2.2. <�Код> setOnEditorActionListener працуе на Amazon Kindle Fire з Android 2.3 і setImeActionLabel не працуе нідзе! Я таксама не магу ўсталяваць тэкст для Enter button.Here гэта код:

mEditText.setImeActionLabel("Reply", EditorInfo.IME_ACTION_UNSPECIFIED);
mEditText.setOnEditorActionListener(new OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId,
                KeyEvent event) {
            Log.d("TEST RESPONSE", "Action ID = " + actionId + "KeyEvent = " + event);
            return true;
        }  
    });

Што я не так раблю? Як я магу гэта выправіць?

10

8 адказы

Вы можаце выкарыстоўваць TextWatcher .

    editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.charAt(s.length() - 1) == '\n') {
                  Log.d("TEST RESPONSE", "Enter was pressed");
            }
        }
    });
7
дададзена
Thanks.It працуе. Але хіба вы не ведаеце, чаму .setImeActionLabel і setOnEditorActionListener не працуе на Nexus 4, але працы ў іншых прыладах?
дададзена аўтар MainstreamDeveloper00, крыніца
Android фрагментацыя магіі. Для майго Galaxy Nexus яны таксама не працуюць
дададзена аўтар Dmitry Guselnikov, крыніца
Для мяне гэта не працуе, нават пасля дадання SingleLine = «праўдзівы» у атрыбутах ET. Прылады я заўважыў гэта Nexus 6, Nexus 4 і Moto G. падабенства ўсе Android 5.0! Так што, калі хто-то прыходзіць па гэтым жа пытанні. даць адказ калі ласка.
дададзена аўтар sud007, крыніца
Для мяне imeOptions працаваў толькі калі вы ўсталявалі SingleLine = «праўдзівы» на EditText. Здаецца дзіўным і раздражняе, што можа быць дызайн, але гэта тое, што я знайшоў.
дададзена аўтар speedynomads, крыніца

Пераканайцеся, што ў вас ёсць набор IME_ACTION ў файле макета:


Для поўнага тлумачэння, см http://developer.android.com/guide /topics/ui/controls/text.html .

7
дададзена
І гэтая лінія: АНДРОІД: inputType = "тэкст"
дададзена аўтар Kai Wang, крыніца

Праз якіх-то трохі больш пошукаў - гэта рашэнне для мяне ( працуе таксама ў фрагменце ):

Just remove the imeAction

1
дададзена

Тое, што спрацавала для мяне гэта, я дадаў гэта ніжэй лініі EditText

android:imeOptions="actionSend"

гэтая лінія робіць клавіятуру, якая ўсплывае пры націску на рэдагавання тэксту мае кнопку адправіць замест пошуку

у setOnEditorActionListener перавызначыць наступны метад шукае дзеянні пасылу

@Override
    public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
        if (actionId == EditorInfo.IME_ACTION_SEND) {
        //implement stuff here
          }
        }
1
дададзена

У файле xml дадайце тэг Android: inputType = "тэкст" у EditText

1
дададзена
Дадаць Android: imeOptions = "actionSend" таксама
дададзена аўтар Nakul, крыніца

упэўніцца:

inputType = "тэкст";

imeOptions = "actionSend";

0
дададзена

Я атрымаў яго, ён працуе на EditText у дзейнасці, але не ў Fragement.


            
        


mEditText.setImeActionLabel("搜索", EditorInfo.IME_ACTION_SEARCH);
    mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                MToastUtil.show("搜索");
            }
            return false;
        }
    });
0
дададзена

You can try this to use the OnKeyListener

editText.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int actionId, KeyEvent event) {
            Log.d("TEST RESPONSE", "Action ID = " + actionId + "KeyEvent = " + event);
            return false;
        }
    });
0
дададзена
Усё тое ж ... Нічога праца
дададзена аўтар MainstreamDeveloper00, крыніца
Прачытайце дакументацыю для View.OnKeyListener, «Гэта карысна толькі для апаратных клавіятур, метад ўводу праграмнага забеспячэння не мае якіх-небудзь абавязацельстваў, каб выклікаць гэты слухача.» developer.android.com/reference/android/view/…</а>
дададзена аўтар speedynomads, крыніца
Я гэта ў маім LogCat: Дзеянне ID = 66KeyEvent = KeyEvent {дзеянне = ACTION_UP, KEYCODE = KEYCODE_ENTER, скан = 0, metaState = 0, сцягі = 0x6, RepeatCount = 0, eventTime = 653776952, прастоі = 653776952, DeviceId = - 1, крыніца = 0x0} і я выкарыстоўваю мой код
дададзена аўтар vmathieu, крыніца