2014-06-19 1 views
0

대화 상자에있는 목록 내에 편집 텍스트를 만들었습니다. 처음에는 edittext가 비활성화되고 대화 상자의 다른 버튼을 탭하면 활성화됩니다. 디버그를 더 디버그하고 키보드가 백그라운드 활동을하게하는 배경 활동에 초점을 맞추고있는 것으로 나타났습니다.AlertDialog에 키보드가없고 대화 상자에 초점을 두지 않고 배경 활동이 남아 있기 때문에 해결 방법은 무엇입니까?

그냥 지적 해주세요 : 내 편집 텍스트는 숫자입니다.

시도 여러 옵션하지만 결과는 :

  1. InputMethodManager keyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
    keyboard.showSoftInput(null, InputMethodManager.SHOW_FORCED, null); 
    

는 그 키보드가 열려있는 대화 후이 옵션을 사용하여 백그라운드 작업에오고 발견했다.

splitDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

두 옵션 모두 대화 상자에서 키보드를 열 수 없습니다.

XML 생성 중에 editText 상자에 추가했습니다.

내 대화 코드 :이 문제로 인해 붙어로

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setView(dialogView); 
    Dialog dialog = builder.create(); 
    builder.setTitle("Split Balance"); 
    builder.setPositiveButton("Ok", new SplitDialogCallback()); 
    dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
    splitDialog.show(); 

이 방향을주십시오.

대화 상자의 목록보기 대신 직접 하나의 EditText를 추가하면 문제가 없지만 동일한 문제는 다시 제거합니다. 목록보기에서 텍스트를 편집하는 경우 왜 포커스가 안되는지 이해할 수 없습니다.

답변

1

안드로이드 키보드는 이런 방식으로 입력을 전환 할 필요가 없도록 아주 지능적입니다. 한 번 해보십시오.

삭제이 :

InputMethodManager keyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
keyboard.showSoftInput(null, InputMethodManager.SHOW_FORCED, null); 

splitDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

다음 내가 대신 view.Try이의 사용자 지정 대화 레이아웃을 사용하는 것이 좋습니다 것입니다.

final Dialog splitDialog = new Dialog(this); 
    splitDialog.setContentView(R.layout.abc_action_bar_decoryour_dialog_layout); 
    //Button that you want to toggle the editText enabled 
    Button btn = splitDialog.findViewById(R.id.your_button); 
    btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      EditText editText =splitDialog.findViewById(R.id.your_edit_text); 
      editText.setEnabled(true); 
      editText.requestFocus(); 
     } 
    }); 
    splitDialog.show(); 

이 이럴 당신이 어쨌든 사용자 정의 대화 레이아웃을 사용하고 이후 esp는 당신에게 더 많은 자유를 제공, 대화 상자를 사용하는 것이 더 좋은 방법이다.

나는 당신의 방법은

+0

감사는 단순히 더 나은 처리 솔루션을 working..but되지 않는 이유는 말하지 않습니다 알고 있지만, 글고 대화 내부 목록보기에서와 같이, 그래서 방법으로하는 것은 여러가있을 수 buttEditTexton를 찾을 수 목록보기의 행 나는 height와 weight 0을 가진 하나의 dummy edittext를 추가하여 작업을 추가했습니다. 그래서 안드로이드는 대화 상자에 편집 텍스트가 있다고 생각하고 키보드를 엽니 다. 그러나 그것은 적절한 해결책이 아닙니다. –

+0

사용자 정의 목록보기를 사용하고 있습니까? 목록보기 어댑터에서 클릭 수신기에 단추를 추가하면 코드가 동일하게 유지됩니다. 현재 목록 항목에 단추와 edittext가 있음을 이해하고 있습니다. 옳은? – Droidekas

+0

네, 맞습니다. 현재 사용자 지정 목록보기를 사용하고 있지 않지만 별도의 XML 파일을 통해 목록보기에 사용자 지정보기를 추가합니다. 도움을 주셔서 감사합니다,이 솔루션을 시도합니다. –

관련 문제