마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

키보드를 띄워서 키입력을 받고싶습니다

0 추천
키보드를 띄워서 키입력을 받고싶습니다

EditText 로 포커스를 받으면 키패드가 뜹니다만

EditText 가 안보이는상태로 키패드를 띄워서 키입력을 받는수는 없을까요?

 

그리고 키입력을 받을때 현재 누른키값만 얻는방법 없나요?

아래와같이하면 EditText 에입력된 전체값이 얻어지내여

 

EditText Et = new EditText(this);
        Et.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
                Toast.makeText(conActivity.this, s.toString(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // TODO Auto-generated method stub
                Toast.makeText(conActivity.this, s.toString(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
                Toast.makeText(conActivity.this, s.toString(), Toast.LENGTH_SHORT).show();
            }
        });
구름처럼달처럼 (5,830 포인트) 님이 2015년 3월 5일 질문

1개의 답변

+1 추천
 
채택된 답변
해보진 않았지만 트릭으로 EditText Visibility 를 gone 으로 하고 특정 이벤트시

강제로 포커스를 주면 될 꺼 같네요

현재 누른키는 입력된 전체값을 계속 저장하고 있다가

새로운 인풋값이 들어왔을 때 비교해서 알아낼 수 있을 것 같구요
mamondebaltob (32,750 포인트) 님이 2015년 3월 5일 답변
구름처럼달처럼님이 2015년 3월 5일 채택됨
cEditText.setVisibility(View.GONE);
로하면 포커스나 키패드가 뜨지를않습니다
그리고
아래와같이 키입력후 EditText 를 초기화시키려했더니
프로그램이 죽어버립니다
디버깅을 해보니 cEditText.setText(""); 하는순간 다시 onTextChanged 가 불리고
계속 반복되서 죽는것같습니다
키보드입력받고 입력받은값을 지우고 다시 입력받는 식으로하려면
어떻게하면될까요?

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
               
                Toast.makeText(RemoconActivity.this, s.toString(), Toast.LENGTH_SHORT).show();
                cEditText.setText("");
            }
gone 으로 해서 안뜬다면
FrameLayout 으로 밑에 EditText 를 깔고 위에 메인 레이아웃으로 덮어버리는건
어떨까요

onTextChanged 에서 setText 가 계속불려 stackOverflow 가 발생할꺼 같은데요
if (!s.equals("")) {
    cEditText.setText("");
}

이런식으로 처리하면 되겠네요
감사합니다
좋은하루되세요
...