編集テキストを含むフラグメントがあります。テキストの編集を押すと、キーボードが表示されます。上隅の[保存]ボタンを押すと、アプリケーションは前のフラグメントに戻りますが、キーボードは保持されます。
前のフラグメントに移動するときにキーボードを非表示にしたいのですが。
私はこの解決策を試したことに注意してください: Androidソフトキーボード を閉じる/非表示にします。
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myView.getWindowToken(), 0);
OnCreateメソッドで、両方のフラグメントでこれを使用しようとしました。
また、レイアウトでソフトキーボードを非表示にしようとしました。
Android:windowSoftInputMode="stateAlwaysHidden"
残念ながら、これらのどれも機能しませんでした。
写真を投稿したかもしれませんが、まだ十分な評判はありません。私は建設的な助けと意見に感謝し、「愚かな人が賢明な答えから学ぶよりも、賢い人は愚かな質問から多くを学ぶことができる」ことを忘れないでください。 :)
よろしく、アレクサンドラ
キーボードを非表示にするコードを「保存ボタン」クリックリスナーに配置し、このメソッドを使用してキーボードを非表示にします。
public static void hideKeyboard(Activity activity) {
InputMethodManager inputManager = (InputMethodManager) activity
.getSystemService(Context.INPUT_METHOD_SERVICE);
// check if no view has focus:
View currentFocusedView = activity.getCurrentFocus();
if (currentFocusedView != null) {
inputManager.hideSoftInputFromWindow(currentFocusedView.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
フラグメントまたはアクティビティでキーボードを非表示にする最も簡単な方法
ソルトン:1
//hide keyboard
public static void hideKeyboard(Context ctx) {
InputMethodManager inputManager = (InputMethodManager) ctx
.getSystemService(Context.INPUT_METHOD_SERVICE);
// check if no view has focus:
View v = ((Activity) ctx).getCurrentFocus();
if (v == null)
return;
inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
解決策:2
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
Kotlinの場合、これをトップレベル関数として使用できます。コードをUtils.kt
などの別のクラスに追加するだけです。
fun hideKeyboard(activity: Activity) {
val inputMethodManager =
activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
// Check if no view has focus
val currentFocusedView = activity.currentFocus
currentFocusedView?.let {
inputMethodManager.hideSoftInputFromWindow(
currentFocusedView.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
}
}
フラグメントからアクセスするには、次のように呼び出します。
hideKeyboard(activity as YourActivity)
Javaコード。
@Override
public void onDestroyView() {
super.onDestroyView();
View view = getActivity().getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
public void hideKeyboard(Activity activity) {
InputMethodManager inputManager = (InputMethodManager) activity
.getSystemService(Context.INPUT_METHOD_SERVICE);
// check if no view has focus:
View currentFocusedView = activity.getCurrentFocus();
if (currentFocusedView != null) {
inputManager.hideSoftInputFromWindow(currentFocusedView.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}