web-dev-qa-db-ja.com

Android setOnEditorActionListener()は起動しません

Enterボタンが押されたときにリスナーをEditTextに設定しようとしていますが、まったく起動しませんでした。私はこれをLG Nexus 4 with Android 4.2.2 .setOnEditorActionListenerはAmazonKindleFireでAndroid 2.3とsetImeActionLabelはどこにも機能しません!Enterボタンのテキストも設定できません。コードは次のとおりです。

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

私は何が間違っているのですか?どうすればこれを修正できますか?

12

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

レイアウトファイルにIME_ACTIONが設定されていることを確認してください。

<EditText
    Android:id="@+id/search"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:hint="@string/search_hint"
    Android:inputType="text"
    Android:imeOptions="actionSend" />

完全な説明については、 http://developer.Android.com/guide/topics/ui/controls/text.html を参照してください。

7
BeccaP

XmlファイルでタグAndroid:inputType="text"をEditTextに追加します

2
Nakul

私のために働いたのはこれです、私はこれをEditTextに追加しました

Android:imeOptions="actionSend"

この行は、編集テキストをクリックするとポップアップするキーボードを検索ではなく送信ボタンにします

setOnEditorActionListenerで、アクション送信を探す次のメソッドをオーバーライドします

@Override
    public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
        if (actionId == EditorInfo.IME_ACTION_SEND) {
        //implement stuff here
          }
        }
2
Abhilash Reddy

私は次のコードを使用します

<EditText
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_toRightOf="@id/ic_magnify"
    Android:layout_centerVertical="true"
    Android:textSize="15sp"
    Android:textColor="#000"
    Android:id="@+id/input_search"
    Android:inputType="text"
    Android:background="@null"
    Android:hint="Enter Address, City or Zip Code"
    Android:imeOptions="actionSearch"/>

mSearchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent keyEvent) {

                if(actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE
                        || keyEvent.getAction() == KeyEvent.ACTION_DOWN || keyEvent.getAction() == KeyEvent.KEYCODE_ENTER){

                        geoLocate();

                }

                return false;
            }
        });
1
Dinesh

わかりました。アクティビティのEdittextで機能しますが、フラグメントでは機能しません。

<EditText
                Android:id="@+id/mEditText"
                Android:imeOptions="actionSearch"
                Android:imeActionLabel="搜索"
                Android:inputType="text"
                Android:singleLine="true"
                Android:textSize="18dp"
                Android:paddingTop="5dp"
                Android:paddingBottom="5dp"
                Android:paddingLeft="3dp"
                Android:paddingRight="3dp"
                Android:textColor="@color/black"
                Android:layout_marginTop="7dp"
                Android:layout_marginBottom="7dp"
                Android:shadowColor="#4b000000"
                Android:shadowDy="1"
                Android:shadowDx="1"
                Android:shadowRadius="1"
                Android:cursorVisible="true"
                Android:textCursorDrawable="@null"
                Android:gravity="center_vertical|left"
                Android:background="@color/transparent"
                Android:layout_width="0dp"
                Android:layout_weight="1"
                Android:layout_height="wrap_content"
                tools:ignore="UnusedAttribute">
            <requestFocus/>
        </EditText>


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
Michael Mao

確認してください:

inputType = "text";

imeOptions = "actionSend";

0
Kai Wang

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
vmathieu