2016-02-04 2 views
0

Я использую этот код, чтобы скрыть клавиатуру:Скрытие Клавиатура Android после нажатия кнопки Назад

InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); 
       imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); 

Это хорошо работает. Однако я заметил ошибку. Если я изначально скрыл клавиатуру, используя физическую кнопку «Назад» телефона, я позвонил указанному выше методу, вместо скрытой будет отображаться клавиатура. Другими словами, похоже, что система Android не обнаружила, что я скрыл клавиатуру с помощью кнопки «Назад». Вместо того, чтобы скрывать клавиатуру, она показывает клавиатуру. Как это решить?

+1

Можете ли вы опубликовать фрагмент кода, когда вы используете скрытую функциональность клавиатуры? –

+0

сталкиваясь с такой же проблемой, пожалуйста, помогите –

ответ

3

просто изменить эту строку из

imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); 

в

imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 

Как с помощью переключения изменения состояния на основе текущего состояния. Если его скрытое изображение будет отображаться и наоборот.

1
//hide-keyboard: 
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

//show-keyboard: 
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
0

Это потому, что вы переключаете клавиатуру. Попробуйте это:

InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
0

В вашей деятельности

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 

или вы можете добавить в AndroidManifest.xml

<activity 
    android:name=".views.activities.tile_details.TileDetailActivity" 
    android:screenOrientation="portrait" 
    android:theme="@style/TileDetails.AppTheme.Light" 
    android:windowSoftInputMode="stateHidden" /> 

или

public static void hideSoftKeyboard(View view, Activity activity) { 
    InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
}