5

Làm cách nào để đóng bàn phím khi nhấp vào nút? Tôi có một đoạn có EditText và hai nút. Một người gửi nội dung EditText, người kia chỉ đơn giản là đóng đoạn. Bây giờ khi mảnh vỡ đã biến mất, bàn phím vẫn ở lại. Tuy nhiên, nhấn nút quay lại đóng bàn phím hoặc nhấp vào "xong" cũng sẽ đóng. Nhưng những gì tôi cần là bàn phím biến mất khi đoạn được đóng lại.Loại bỏ bàn phím trên nút bấm mà đoạn chặt

Tôi đã thử giải pháp cho các câu hỏi tương tự here, here hoặc here nhưng không có cách nào hoạt động. Hầu hết trong số họ ném một NullPointerException. Tất cả đều dành cho các hoạt động không phải là mảnh vỡ. Mã để gọi bàn phím hoạt động:

editText.requestFocus(); 
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); 

Tuy nhiên tôi phải thêm getActivity() để làm cho nó hoạt động.

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

7

Sử dụng phương pháp này

public void hideKeyboard() { 
    // Check if no view has focus: 
    View view = getActivity().getCurrentFocus(); 
    if (view != null) { 
     InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
    } 
} 
+0

Cảm ơn cho câu trả lời. Tôi đã thử giải pháp của bạn nhưng nó ném một lỗi: 'LOẠI TRỪ BẤT HỢP: chính Quy trình: com.esqmo.apps.mosungiplus, PID: 14856 java.lang.NullPointerException: Cố gắng gọi phương thức ảo 'android.view.View android .support.v4.app.FragmentActivity.getCurrentFocus() 'trên tham chiếu đối tượng null' tại dòng: ** View view = getActivity(). getCurrentFocus(); ** –

+1

Làm việc ngay bây giờ: Tôi đã gọi hàm getActivity(). onBackPressed (); để đóng đoạn, trước mã của bạn. Tôi vừa đảo ngược chúng. –

1

Hãy thử dưới đây phương pháp

public static void hideKeyboard(Context mContext) { 

    try { 

     View view = ((Activity) mContext).getWindow().getCurrentFocus(); 

     if (view != null && view.getWindowToken() != null) { 

      IBinder binder = view.getWindowToken(); 

      InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(binder, 0); 

     } 

    } catch (NullPointerException e) { 

     e.printStackTrace(); 

    } 

} 

Trong phương pháp này, bạn phải vượt qua tham số ngữ cảnh. Hy vọng nó sẽ giúp bạn ra ngoài.

4

cho một đoạn sử dụng chức năng sau

public static void hideKeyboard(Activity activity) { 
    InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); 
    //Find the currently focused view, so we can grab the correct window token from it. 
    View view = activity.getCurrentFocus(); 
    //If no view currently has focus, create a new one, just so we can grab a window token from it 
    if (view == null) { 
     view = new View(activity); 
    } 
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
} 

gọi nó khi nút được nhấp

btn_cancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      hideKeyboard(getActivity()); 
     } 
    }); 
Các vấn đề liên quan