Android EditText 삭제 (백 스페이스) 키 이벤트


122

editText에 대한 삭제 (백 스페이스) 키 이벤트를 어떻게 감지 할 수 있습니까? TextWatcher를 사용해 보았지만 editText가 비어있을 때 delete 키를 누르면 아무 일도 일어나지 않습니다. 텍스트가 없어도 editText에 대한 삭제 키 누름을 감지하고 싶습니다.

답변:


172

참고 : onKeyListener소프트 키보드에서는 작동하지 않습니다.

당신은 설정할 수 있습니다 OnKeyListener당신을 위해 editText당신은 어떤 키를 눌러 검색 할 수 있도록
편집 : 우리가 확인하는 일반적인 실수 KeyEvent.KEYCODE_BACK에 대한을 backspace하지만, 정말입니다 KeyEvent.KEYCODE_DEL(진짜 이름은 매우 혼란된다!)

editText.setOnKeyListener(new OnKeyListener() {                 
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        //You can identify which key pressed buy checking keyCode value with KeyEvent.KEYCODE_
        if(keyCode == KeyEvent.KEYCODE_DEL) {  
            //this is for backspace
        }
        return false;       
    }
});

9
방금 시도했지만 onKeyListeners는 분명히 백 스페이스를 등록하지 않습니다.
stefs 2011 년

3
소프트 키보드에서는 작동하지 않습니다. 이것은 하드웨어 입력에 대해서만 작동합니다.
Varundroid 2014

6
내 Nexus4 (실행 재고 킷캣)에이 않는 소프트웨어 키보드에 대한 작업을.
Matthias

10
그래서 그것이 소프트 키에서 작동하지 않는다면, 왜이 대답은 안드로이드 플랫폼에서 / 안에서 받아 들여
지는가

32
event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_DEL백 스페이스를 누를 때마다 두 번 이벤트를 실행하고 싶지 않은 경우 사용
Fonix

83

질문 한 지 오래되었지만 같은 문제가 발생했습니다. Estel이 이미 언급했듯이 키 리스너의 문제는 하드웨어 키보드에서만 작동한다는 것입니다. IME (소프트 키보드) 로이 작업을 수행하려면 위한 솔루션은 좀 더 정교합니다.

우리가 실제로 재정의하고자하는 하나의 방법은 sendKeyEvent에서 EditTextInputConnection클래스입니다. 이 메서드는 IME에서 키 이벤트가 발생할 때 호출됩니다. 그러나 EditText이를 재정의하려면 onCreateInputConnection메서드 를 재정의 하는 사용자 지정을 구현 하여 기본 InputConnection개체를 프록시 클래스로 래핑해야 합니다! : |

복잡하게 들리지만 여기에 제가 생각할 수있는 가장 간단한 예가 있습니다.

public class ZanyEditText extends EditText {

    private Random r = new Random();

    public ZanyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public ZanyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ZanyEditText(Context context) {
        super(context);
    }

    public void setRandomBackgroundColor() {
        setBackgroundColor(Color.rgb(r.nextInt(256), r.nextInt(256), r
                .nextInt(256)));
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        return new ZanyInputConnection(super.onCreateInputConnection(outAttrs),
                true);
    }

    private class ZanyInputConnection extends InputConnectionWrapper {

        public ZanyInputConnection(InputConnection target, boolean mutable) {
            super(target, mutable);
        }

        @Override
        public boolean sendKeyEvent(KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN
                    && event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
                ZanyEditText.this.setRandomBackgroundColor();
                // Un-comment if you wish to cancel the backspace:
                // return false;
            }
            return super.sendKeyEvent(event);
        }

    }

}

호출이있는 줄 setRandomBackgroundColor은 내 특별한 백 스페이스 작업이 발생하는 곳입니다. 이 경우EditText 의 배경색을 .

XML에서이를 확장하는 경우 전체 패키지 이름을 태그로 사용해야합니다.

<cc.buttfu.test.ZanyEditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/somefield"
></cc.buttfu.test.ZanyEditText>

27
최근에 Jelly Bean에서 같은 문제가 발생했습니다. 나는 sendKeyEvent (...) 대신 deleteSurroundingText (...)를 재정의해야한다는 점을 제외 하고는이 솔루션이 대부분 작동한다는 것을 발견했습니다 (아무것도 호출되지 않았습니다). 이것이 다른 사람에게 도움이되기를 바랍니다!
Brandon

이 대답은 위의 @Brandon 주석과 결합되어 저에게 효과적입니다. 내가 지금 궁금한 것은 이것이 JellyBean 이전 장치에서 어떻게 작동하는지입니다.
Christopher Perry

2.2 및 2.3 장치에서 허용되는 답변으로 작동합니다.
Christoph

2.3에서 백 스페이스에 대한 키 이벤트를 두 번 실행하는 것 같습니다 ... : /
Jeff

25
이것은 편집 텍스트가 비어있을 때 작동하지 않습니다. 편집 텍스트가 비어 있고 텍스트가 없을 때 삭제 키에 대한 이벤트를 얻는 방법에 대한 아이디어가 있습니까? 4.2
Rickster 2014-04-05

69

이것은 Idris의 답변에 추가되어 deleteSurroundingText에도 재정의를 추가합니다. 여기에서 더 많은 정보를 찾았습니다. Android : WebView / BaseInputConnection의 백 스페이스

package com.elavon.virtualmerchantmobile.utils;

import java.util.Random;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputConnectionWrapper;
import android.widget.EditText;

public class ZanyEditText extends EditText {

    private Random r = new Random();

    public ZanyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public ZanyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ZanyEditText(Context context) {
        super(context);
    }

    public void setRandomBackgroundColor() {
        setBackgroundColor(Color.rgb(r.nextInt(256), r.nextInt(256), r
                .nextInt(256)));
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        return new ZanyInputConnection(super.onCreateInputConnection(outAttrs),
                true);
    }

    private class ZanyInputConnection extends InputConnectionWrapper {

        public ZanyInputConnection(InputConnection target, boolean mutable) {
            super(target, mutable);
        }

        @Override
        public boolean sendKeyEvent(KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN
                    && event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
                ZanyEditText.this.setRandomBackgroundColor();
                // Un-comment if you wish to cancel the backspace:
                // return false;
            }
            return super.sendKeyEvent(event);
        }


        @Override
        public boolean deleteSurroundingText(int beforeLength, int afterLength) {       
            // magic: in latest Android, deleteSurroundingText(1, 0) will be called for backspace
            if (beforeLength == 1 && afterLength == 0) {
                // backspace
                return sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))
                    && sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
            }

            return super.deleteSurroundingText(beforeLength, afterLength);
        }

    }

}

3
감사합니다! 이 deleteSurroundingText비트는 수많은 다른 솔루션을 시도한 후에 필요한 것입니다.
Adam Rosenfield 2013-09-17

5
이 솔루션은 이전 Android 버전에서 정말 잘 작동했지만 불행히도 deleteSurroundingText는 4.4 (KitKat)에서 공백을 제거 할 때만 호출됩니다. Nexus4와 7에서 모두 테스트했습니다.
Dean

1
EditText가 여러 줄일 때 deleteSurroundingText가 필요한 것 같습니다. 이상한
Alex Sorokoletov 2014-08-02

7
감사합니다. deleteSurroundText를 사용하지 않았습니다. Android는 너무 무작위이므로 이름을 androm으로 바꿔야합니다.
Torsten Ojaperv 2015

2
나를 위해 작동하지만 더 이상 구두점이나 공백을 삭제할 수 없습니다!
jaytj95

29

다음은 모든 API에서 작동하는 쉬운 솔루션입니다.

private int previousLength;
private boolean backSpace;

// ...

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    previousLength = s.length();
}

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

@Override
public void afterTextChanged(Editable s) {
    backSpace = previousLength > s.length();

    if (backSpace) {

        // do your stuff ...

    } 
}

업데이트 17.04.18 .
주석에서 지적했듯이이 솔루션은 EditText가 비어있는 경우 백 스페이스 누르기를 추적하지 않습니다 (대부분의 다른 솔루션과 동일).
그러나 대부분의 사용 사례에는 충분합니다.
추신 오늘 비슷한 것을 만들어야한다면 다음과 같이 할 것입니다.

public abstract class TextWatcherExtended implements TextWatcher {

    private int lastLength;

    public abstract void afterTextChanged(Editable s, boolean backSpace);

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        lastLength = s.length();
    }

    @Override
    public void afterTextChanged(Editable s) {
        afterTextChanged(s, lastLength > s.length());
    }  
}

그런 다음 일반 TextWatcher로 사용하십시오.

 editText.addTextChangedListener(new TextWatcherExtended() {
        @Override
        public void afterTextChanged(Editable s, boolean backSpace) {
           // Here you are! You got missing "backSpace" flag
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // Do something useful if you wish.
            // Or override it in TextWatcherExtended class if want to avoid it here 
        }
    });

내가 필요한 것! 감사합니다!
DH28

9
TextWatcher 빈 글고 치기에 트리거되지 않습니다
단 Neacşu에게

@Leo Droidcoder 비슷한 솔루션에서 사용했습니다. 명확하고 간결하며 완벽하게 작동합니다 ... 건배합니다.
AJW

이 알고리즘에는 입력 후 공백을 클릭하는 것처럼 결함이 있으며 이전 길이가 s.length보다 큽니다
Marcin S.

2
작품은 오랫동안 당신이 선택 (자동 완성)를 사용하지 마십시오
Javatar

13

나는 해결책을 찾기 위해 이틀을 보냈고 작동하는 것을 알아 냈습니다 :) (소프트 키에서)

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

@Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if (count == 0) {
        //Put your code here.
        //Runs when delete/backspace pressed on soft key (tested on htc m8)
        //You can use EditText.getText().length() to make if statements here
        }
    }

@Override
    public void afterTextChanged(Editable s) {
    }
}

EditText에 textwatcher를 추가 한 후 :

yourEditText.addTextChangedListener(textWatcher);

다른 안드로이드 기기 (삼성, LG 등)에서도 작동하기를 바랍니다.


장치 HTC 욕구 (HTC는 일반적이지만 :-P)
Junaid

입력 한 공백 인 경우, 또한 계산 == 0
Bincy 아기

브릴리언트에는 1 개 응답 형제 없습니다 :
Gundu Bandgar

6
완전히 작동하지 않습니다. count == 0은 edittext가 비어있을 때만 가능합니다!
Leo Droidcoder

@MarcAlexander이 답변에 대해 잘 모르겠지만 위의 답변에서 내 솔루션을 확인할 수 있습니다
Leo Droidcoder 2019

5

완벽하게 작동하는 내 간단한 솔루션. 플래그를 추가해야합니다. 내 코드 스 니펫 :

editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            if (after < count) {
                isBackspaceClicked = true;
            } else {
                isBackspaceClicked = false;
            }
        }

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

        @Override
        public void afterTextChanged(Editable s) {
            if (!isBackspaceClicked) {
                // Your current code
            } else {
                // Your "backspace" handling
            }
        }

textChangeListner가 emptTextview에서 호출되지 않았습니다.
Janardhan R

3

TextWatcher로 EditText 생성 예

EditText someEdit=new EditText(this);
//create TextWatcher for our EditText
TextWatcher1 TW1 = new TextWatcher1(someEdit);
//apply our TextWatcher to EditText
        someEdit.addTextChangedListener(TW1);

맞춤 TextWatcher

public class TextWatcher1 implements TextWatcher {
        public EditText editText;
//constructor
        public TextWatcher1(EditText et){
            super();
            editText = et;
//Code for monitoring keystrokes
            editText.setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if(keyCode == KeyEvent.KEYCODE_DEL){
                        editText.setText("");
                    }
                        return false;
                }
            });
        }
//Some manipulation with text
        public void afterTextChanged(Editable s) {
            if(editText.getText().length() == 12){
                editText.setText(editText.getText().delete(editText.getText().length() - 1, editText.getText().length()));
                editText.setSelection(editText.getText().toString().length());
            }
            if (editText.getText().length()==2||editText.getText().length()==5||editText.getText().length()==8){
                editText.setText(editText.getText()+"/");
                editText.setSelection(editText.getText().toString().length());
            }
        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after){
        }
        public void onTextChanged(CharSequence s, int start, int before, int count) {



        }
    }

1

Kotlin을 사용하는 사람을 위해

addOnTextChanged 일부 경우를 처리하기에 충분히 유연하지 않음 (예 : 편집 텍스트가 비어있을 때 사용자가 삭제를 누르는지 감지)

setOnkeyListener소프트 키보드 나 하드 키보드에서도 작동했습니다! 그러나 일부 장치에서만 . 제 경우에는 Samsung s8에서 작동하지만 Xiaomi mi8 se에서는 작동하지 않습니다.

kotlin을 사용하는 경우 crossline 기능을 사용할 수 있습니다 doOnTextChanged.과 동일 addOnTextChanged하지만 편집 텍스트가 비어 있어도 콜백이 트리거됩니다.

참고 : doOnTextChanged는 Android KTX 라이브러리 의 일부입니다.


2
당신은 아마 지정할 수있는 doOnTextChanged 확장 기능은 안드로이드 KTX 라이브러리에 액세스 할 수

2
그러나 콜백이 "편집 텍스트가 비어 있어도 트리거"되지 않는 것 같습니다. 빈에 대한 delete (backspace) 차단과 함께 일부 스 니펫을 제공 할 수 EditText있습니까? 미리 감사드립니다
stone

1
아, 프로젝트를 개발할 때 테스트 해 봤어요. 제 경우에는 xiaomi mi8se에 있으며 edittext가 비어 있고 delete를 누르면 콜백이 실행되지 않습니다. 이 문장의 스 니펫을 검색하겠습니다.
Mạnh Hoàng Huynh


0

이것은 나를 위해 일하는 것 같습니다.

public void onTextChanged(CharSequence s, int start, int before, int count) {
    if (before - count == 1) {
        onBackSpace();
    } else if (s.subSequence(start, start + count).toString().equals("\n")) {
        onNewLine();
    }
}

0

나는 또한 setOnKeyListener를 사용하고 있기 때문에 Dialog ..에서 같은 문제에 직면했다. 그러나 나는 기본 반환 true를 설정했다. 아래 코드와 같이 변경하면 잘 작동합니다 ..

    mDialog.setOnKeyListener(new Dialog.OnKeyListener() {

        @Override
        public boolean onKey(DialogInterface arg0, int keyCode,
                             KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                mDialog.dismiss();
                return true;
            }
            return false;//this line is important 

        }
    });

0

@Jiff를 기반으로 ZanyEditText여기에 WiseEditText있습니다.setSoftKeyListener(OnKeyListener)

package com.locopixel.seagame.ui.custom;

import java.util.Random;

import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.AppCompatEditText;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputConnectionWrapper;

public class WiseEditText extends AppCompatEditText {

    private Random r = new Random();
    private OnKeyListener keyListener;

    public WiseEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public WiseEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public WiseEditText(Context context) {
        super(context);
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        return new MyInputConnection(super.onCreateInputConnection(outAttrs),
                true);
    }

    private class MyInputConnection extends InputConnectionWrapper {

        public MyInputConnection(InputConnection target, boolean mutable) {
            super(target, mutable);
        }

        @Override
        public boolean sendKeyEvent(KeyEvent event) {
            if (keyListener != null) {
                keyListener.onKey(WiseEditText.this,event.getKeyCode(),event);
            }
            return super.sendKeyEvent(event);
        }

        @Override
        public boolean deleteSurroundingText(int beforeLength, int afterLength) {       
            // magic: in latest Android, deleteSurroundingText(1, 0) will be called for backspace
            if (beforeLength == 1 && afterLength == 0) {
                // backspace
                return sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))
                    && sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
            }

            return super.deleteSurroundingText(beforeLength, afterLength);
        }

    }

    public void setSoftKeyListener(OnKeyListener listener){
        keyListener = listener;
    }

}

각 삭제 키 이벤트에 대해 두 번 호출됩니다.
Pankaj Kumar

0

내 문제는 내가 정의 있다고했다 Textwatcher내가 추가하고 싶지 않았다, 그래서 OnKeyListenerEditText내가 정의를 만들려하지 않았다뿐만 아니라 EditText. 백 스페이스가 눌러 졌는지 감지하고 싶었습니다.afterTextChanged메서드 으므로 이벤트를 트리거하지 않아야합니다.

이것이 내가 이것을 해결 한 방법입니다. 누군가에게 도움이되기를 바랍니다.

public class CustomTextWatcher extends AfterTextChangedTextWatcher {

private boolean backspacePressed;

@Override
public void afterTextChanged(Editable s) {
    if (!backspacePressed) {
        triggerYourEvent();
    }
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    super.onTextChanged(s, start, before, count);
    backspacePressed = count == 0; //if count == 0, backspace is pressed
}
}

0

버전 4.2, 4.4, 6.0에서 @Jeff의 솔루션을 테스트했습니다. 4.2 및 6.0에서는 잘 작동합니다. 그러나 4.4에서는 작동하지 않습니다.

이 문제를 쉽게 해결할 수있는 방법을 찾았습니다. 요점은 처음에 EditText의 내용에 보이지 않는 문자를 삽입하고 사용자가이 문자 앞에 커서를 이동하지 못하도록하는 것입니다. 내 방법은 ImageSpan이 너비가 0 인 공백 문자를 삽입하는 것입니다. 다음은 내 코드입니다.

                @Override
                public void afterTextChanged(Editable s) {
                    String ss = s.toString();
                    if (!ss.startsWith(" ")) {
                        int selection = holder.editText.getSelectionEnd();
                        s.insert(0, " ");
                        ss = s.toString();
                        holder.editText.setSelection(selection + 1);
                    }
                    if (ss.startsWith(" ")) {
                        ImageSpan[] spans = s.getSpans(0, 1, ImageSpan.class);
                        if (spans == null || spans.length == 0) {
                            s.setSpan(new ImageSpan(getResources().getDrawable(R.drawable.zero_wdith_drawable)), 0 , 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                        }
                    }
                }

그리고 SelectionChangeListener가있는 사용자 정의 EditText가 필요합니다.

public class EditTextSelectable extends android.support.v7.widget.AppCompatEditText {
public interface OnSelectChangeListener {
    void onSelectChange(int start, int end);
}

private OnSelectChangeListener mListener;

public void setListener(OnSelectChangeListener listener) {
    mListener = listener;
}

...constructors...

@Override
protected void onSelectionChanged(int selStart, int selEnd) {
    if (mListener != null) {
        mListener.onSelectChange(selStart, selEnd);
    }
    super.onSelectionChanged(selStart, selEnd);
}

}

그리고 마지막 단계

holder.editText.setListener(new EditTextSelectable.OnSelectChangeListener() {
                @Override
                public void onSelectChange(int start, int end) {
                    if (start == 0 && holder.editText.getText().length() != 0) {
                        holder.editText.setSelection(1, Math.max(1, end));
                    }
                }
            });

이제 끝났습니다 ~ EditText에 실제 내용이 없을 때 백 스페이스 키 이벤트를 감지 할 수 있으며 사용자는 우리의 트릭에 대해 아무것도 알지 못합니다.


0

이 질문은 오래되었을 수 있지만 대답은 TextWatcher를 사용하면 정말 간단합니다.

int lastSize=0;
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    //2. compare the old length of the text with the new one
    //3. if the length is shorter, then backspace was clicked
    if (lastSize > charSequence.length()) {
        //4. Backspace was clicked
        //5. perform action
    }
    //1. get the current length of of the text
    lastSize = charSequence.length();
}

이전 솔루션과 마찬가지로 자동 완성 / 제안에 의해 트리거 될 수 있습니다.
Stonz2

0

소프트 키보드로 작동하는 정말 간단한 솔루션을 찾았습니다.

override fun onTextChanged(text: CharSequence?, start: Int, before: Int, count: Int) {
    text?.let { 
        if(count < before) {
            Toast.makeText(context, "backspace pressed", Toast.LENGTH_SHORT).show()
            // implement your own code
        }
    }
}

-3

활동에 키 리스너를 설정할 수 있으며 콜백 메서드에서 사용자가 어떤 키를 누르는지 감지 할 수 있습니다. 아래 코드는 참조 용입니다. 도움이 되었기를 바랍니다.

//after user hits keys, this method would be called.
public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (editText.isFocused()) {
            switch (keyCode) {
            case KeyEvent.KEYCODE_DEL:  //delete key
                Log.i("INFO", "delete key hit"); //you should see this log in ddms after you hit delete key
                break;
            }
        }
        return super.onKeyUp(keyCode, event);
    }

이 솔루션을 확인했습니다. 편집 텍스트가 자체적으로 처리하지 않는 경우에만 KEYCODE_DEL이 활동에 표시됩니다. 예를 들어 editText에 텍스트가 없거나 일부 텍스트가 있지만 커서가 맨 처음에있는 경우입니다. 그게 재미 내 경우에는 내가 필요로하는 바로 그 행동
안톤 Kizema

내 활동에는 EditText가 없으며 키보드를 프로그래밍 방식으로 표시합니다. 모든 소프트 키보드 키를 잡아야하는데 이것이 유일한 해결책 인 것 같습니다. 다른 하나는 dispatchKeyEvent 메서드를 재정의합니다. 불행히도 JellyBean에서 시작하면 IME는 DELETE 키에 대한 KeyEvent를 보내지 않습니다. developer.android.com/reference/android/view/KeyEvent.html
Bemipefe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.