2

Почему экранная клавиатура отображается только на планшете - это тайна!Softkeyboard не отображается в AlertDialog только для телефона

Вот код, который я использовал.

AlertDialog.Builder builder = new AlertDialog.Builder(CurrentActivityName.this); 
builder.setTitle(“Title”); 
builder.setMessage(“Message”); 
final EditText input = new EditText(CurrentActivityName.this); 
builder.setView(input); 
builder.setPositiveButton(R.string.allow, new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 
//my code 
} 
}); 
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 
//my code 
} 
}); 
builder.create().show(); 

Я могу решить ее usingpostDelayed с числом миллисекунд Чтобы отправить Runnable

input.requestFocus(); 
input.postDelayed(new Runnable() { 
@Override 
public void run() { 
InputMethodManager keyboard = (InputMethodManager) 
         getSystemService(Context.INPUT_METHOD_SERVICE); 
keyboard.showSoftInput(input, 0); 
        } 
       },200); 

жестко закодированы задержки никогда не рекомендуется, так как они могут вводить непредсказуемое поведение под различные условия/разные разработчики ices.

Я ищу стабильное решение.

ответ

2

Я решил проблему

AlertDialog alertDlg = builder.create(); 

alertDlg.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 

alertDlg.show();