2010-05-09 43 views
8

Tôi đang phát triển trên Droid Incredible (và đã thử nghiệm trên bộ mô phỏng 1.5 AVD) và một trong các tab trong tiện ích tab của tôi bao gồm một listview và một hàng với EditText và một Nút gửi (cho một tính năng trò chuyện). Tôi đang sử dụng sau đây để đóng bàn phím mềm khi tôi nhấp vào Gửi, nhưng nó không hoạt động. Điều này giống với mã tôi đã tìm thấy ở nơi khác mà mọi người đã upvoted là chính xác.Ẩn bàn phím mềm không hoạt động

Xem mọi thứ tôi bị thiếu?

// in Button's onClick(): 
EditText chatTextBox = (EditText) findViewById(R.id.chat_entry); 
// Handle button click ... 
chatTextBox.setText(""); 

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(chatTextBox.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); 

Tôi cũng đã thử thay đổi cờ thành 0. Không may mắn. Có ai biết chuyện gì không ??

**** CHỈNH SỬA **** Chỉ cần nhận ra tôi ban đầu đang sử dụng hideSoftInputFromInputMethod() thay vì hideSoftInputFromWindow(). Thay đổi nó đã không làm cho nó hoạt động mặc dù ...

Trả lời

20

Thay đổi HIDE_IMPLICIT_ONLY thành 0 (sau khi tôi đổi thành hideSoftInputFromWindow() từ số hideSoftInputFromInputMethod()).

Tuy nhiên tôi không chắc tại sao HIDE_IMPLICIT_ONLY không hoạt động vì tôi không mở bàn phím một cách rõ ràng bằng cách nhấn và giữ trên Menu.

+0

Nếu bạn sẽ hiển thị bàn phím với cờ 'SHOW_FORCED'then nó chỉ ra rằng người dùng đã buộc các phương thức nhập liệu mở (chẳng hạn như bằng đơn cách nhấn lâu) vì vậy không nên bị đóng cửa cho đến khi họ một cách rõ ràng làm như vậy. [Xem tài liệu] (http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#SHOW_FORCED) –

+0

Nếu bạn có ** Bắt buộc ** hiển thị bàn phím và muốn ẩn sau đó sử dụng mã sau đây 'InputMethodManager imm = (InputMethodManager) mContext.getSystemService (Context.INPUT_METHOD_SERVICE); \t \t imm.hideSoftInputFromWindow (mEditText.getWindowToken(), 0); ' –

11

Một tùy chọn khác để ngăn chặn nó từ hoạt động trong AndroidManifest.xml nộp

android: windowSoftInputMode = "stateAlwaysHidden" - Phương pháp này sẽ ngăn chặn tải/cho thấy bàn phím khi hoạt động được tải. Nhưng khi bạn nhấp vào thành phần có thể chỉnh sửa như edittext, bàn phím sẽ mở. hoàn hảo cho yêu cầu của tôi.

<activity 
      android:name=".Name" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="stateAlwaysHidden"> 
+0

điều này hoạt động khi bàn phím không bao giờ chết bằng cách nào đó. tốt nhất. – beginners

5

1.first ràng buộc chỉnh sửa văn bản thẻ của bạn với bàn phím và mở
tức inputMethodManager.showSoftInput(_edittext, 0); // đây _edittext là thể hiện của quan điểm

2.keyboard sẽ được ẩn tự động nếu chỉnh sửa văn bản bị ẩn khỏi màn hình

3.tài liệu chỉnh sửa vẫn còn trên màn hình nhưng bạn muốn ẩn bàn phím, sau đó sử dụng mã bên dưới imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0); // t anh ấy sẽ không hoạt động nếu edittext không có trên màn hình hoặc không tập trung.

+1

Đây là câu trả lời hay nhất từ ​​trước đến nay !!! Giải thích bí ẩn đằng sau tất cả ẩn bàn phím – ulusoyca

Các vấn đề liên quan