Ho visto e utilizzato entrambi i metodi per nascondere la tastiera sullo schermo durante la codifica di Android:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
e
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Ho letto la documentazione per entrambi e non sono ancora chiaro come ciascuno di essi sia diverso, lo stesso, che è un metodo o una pratica migliore da usare e quale dovrebbe essere utilizzato in quali situazioni.
Ecco un estratto dalla .setSoftInputMode
documentazione :
Specify an explicit soft input mode to use for the window, as per WindowManager.LayoutParams.softInputMode. Providing anything besides "unspecified" here will override the input mode the window would normally retrieve from its theme.
Ed ecco un estratto dalla InputMethodManager
documentazione che sembra dire quasi la stessa cosa:
You can also control the preferred soft input state (open, closed, etc) for your window using the same windowSoftInputMode attribute.
More finer-grained control is available through the APIs here to directly interact with the IMF and its IME -- either showing or hiding the input area, letting the user pick an input method, etc.
Quindi qual è la differenza tra queste due opzioni per nascondere la tastiera virtuale di Android e se ne ricava un vantaggio rispetto all'altra? Uno è più efficiente? Quali sono gli usi specifici per ciascuno?