Tôi đang hiển thị hộp thoại có giao diện edittext. Tuy nhiên, phím chức năng sẽ chỉ mở nếu người dùng nhấn bên trong editview. Vì vậy, tôi đã cố gắng gọi một InputMethodManager với mã sau đây.Hiển thị bàn phím ảo cho hộp thoại
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
Hộp thoạiLoại trường là trường nhập. Tuy nhiên, khi chính xác tôi phải làm điều này? Tôi đã thử nó trong phương thức onStart() của hộp thoại, nhưng không có gì xảy ra. Tôi cũng đã thử yêu cầu tiêu điểm cho dialogField trước đây, nhưng điều đó không thay đổi gì cả.
Tôi cũng đã cố gắng mã này
dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
public void onFocusChange (View v, boolean hasFocus)
{
if (hasFocus)
{
Main.log("here");
dialogInput.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
/*
InputMethodManager mgr =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(dialogField,0);
*/
}
}
});
trong cả hai phiên bản. Nhưng không có bàn phím mềm nào muốn xuất hiện. Main.log chỉ là một bản ghi, cho tôi thấy rằng hàm này thực sự được gọi. Và vâng, nó được gọi.
Tôi có thể lấy bàn phím có cờ SHOW_FORCED trước khi hộp thoại mở ra. Nhưng sau đó nó sẽ không đóng cửa khi thoát. Và tôi chỉ có thể làm điều đó TRƯỚC KHI tôi hiển thị hộp thoại. Bên trong bất kỳ callback nó cũng không hoạt động.
Bạn đã thử cờ SHOW_IMPLICIT chưa? –
Đây là một cái gì đó tôi đã vật lộn với quá mức nhưng đã không thể làm việc đúng cách. – Thomas
Có, tôi đã thử cờ SHOW_IMPLICIT. Tài liệu nói chính xác, bạn nên gọi showSoftInput, nếu người dùng được yêu cầu nhập vào cho TextEdit. Nhưng bằng cách nào? – Rene