2014-07-09 1 views
1

키패드가 항상 나타나야하는 activity을 만들었습니다. 그래서 edittextrequestFocus()을 사용했습니다. 그러나 나는 키패드 만 사라지 길 원치 않는다. 대신 키패드가있는 경우에도 뒤로 버튼을 누르면 전체 활동이 finish()으로 바뀝니다. this answer을 시도했지만 작동하지 않았습니다. 나는 약간의 추가 작업을 보였지만 this을 시도했지만 텍스트 워처와 함께 작동하지 않습니다. 아래는 편집 문구입니다. 사용자에게 암호 필드조차 표시하지 않기 때문에 차원 특성을 0dp로 유지했습니다. 이를 달성하기위한 도움을 주시면 감사하겠습니다. 추가 정보가 필요한지 알려주십시오.뒤로 버튼을 누르 자마자 활동 완료

<EditText 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:id="@+id/passwordet" 
     android:inputType="number" 
     /> 

P.S : 키패드가 활동에 존재하는 경우가 해고되지 않기 때문에 onBackPressed()이 작동하지 않습니다 재정의.

답변

0

당신은 활동을 완료 할 onBackPressed 메소드를 오버라이드 (override) 할 수 있습니다

@Override 
public void onBackPressed() { 
    finish(); 
} 
+0

:

public class CustomEditText extends EditText { private OnKeyboardDismissListener listener; public void setOnKeyBoardDismissListener(OnKeyboardDismissListener listener) { this.listener = listener; } public CustomEditText(Context context) { super(context); } @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && listener != null) listener.onKeyBoardDismiss(); return super.onKeyPreIme(keyCode, event); } static interface OnKeyboardDismissListener { void onKeyBoardDismiss(); } } 

레이아웃 작업 내부

<YourPackageName.CustomEditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content"/> 

에서. 키패드가있을 때 onBackPressed()가 실행되지 않습니다. – Kanth

+0

불쾌한 점, 질문을 읽을 때 분명히 나타나지 않았습니다 ... –

0

는 방법에 따라 글고을 확장하고 추가 할 수 있습니다.

공용 클래스 MyEditText는 글고 연장 {

OnKeyListener onKeyListener = null; 
public static int BACK_KEY = 10001; 

public void setOnKeyListener(OnKeyListener l) { 
    super.setOnKeyListener(l); 
    onKeyListener = l; 
    Log.i(TAG, "setOnKeyListener Called"); 
} 

public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
    Log.i(TAG, "onKeyPreIme"); 
    if (keyCode == KeyEvent.KEYCODE_BACK 
      && event.getAction() == KeyEvent.ACTION_UP) { 
     if (onKeyListener != null) { 
      onKeyListener.onKey(this, BACK_KEY, event); 
     } 
     return false; 
    } 
    return super.dispatchKeyEvent(event); 
} 

}

활동 에서

editText.setOnKeyListener (이 께); 및 onKey 메서드 처리

+0

친절하게 제 질문을 읽을 수 있습니까? 내 질문에 이미이 대답을 연결하고 그것이 작동하지 않았다. – Kanth

+0

보스, onBackKeyPressed는 키보드가 보이면 호출되지 않습니다. 뒤로 키에 대한 알림을 받으려면이 방법으로해야합니다. 먼저 OnKeyPrime 메서드에 축배를 표시하고 해당 키가 호출되는지 확인하십시오. 그리고 나서 자신 만의 콜백을 사용하여 활동에 알리는 것이 필요합니다. 전체 소스 코드를 원한다면 샘플 애플리케이션을 게시하십시오. –

0

keyBoardDismissEvent를 캡처하려면 사용자 지정 EditText를 만들어야합니다.

당신은 이런 식으로 뭔가를 시도 할 수 있습니다 : 당신은 완전히 내 질문을 읽어 더라면 나는 행복 느꼈을 것이다

CustomEditText editText = (CustomEditText) findViewById(R.id.editText); 
     editText.setOnKeyBoardDismissListener(new OnKeyboardDismissListener() { 
      @Override 
      public void onKeyBoardDismiss() { 
       MainActivity.this.finish(); 
      } 
     }); 
관련 문제