2013-08-23 2 views
1

У меня есть кнопка очистки, чтобы очистить EditText.Показать клавиатуру после нажатия кнопки

<Button 
     android:id="@+id/bClearText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right|center_vertical" 
     android:layout_marginRight="10dp" 
     android:onClick="clearEtSearch" 
     android:background="@drawable/delete" /> 

Этот метод очищает EditText:

public void clearEtSearch(View v) { 
    etSearch.setText(""); 
    etSearch.requestFocus(); 
    showKeyboard(etSearch); 
} 

Я взял код ниже из укрытия и изменен, чтобы показать клавиатуру, но она не работает

private void showKeyboard(View view) { 
    InputMethodManager manager = (InputMethodManager) view.getContext() 
      .getSystemService(INPUT_METHOD_SERVICE); 
    if (manager != null) 
     manager.showSoftInputFromInputMethod(view.getWindowToken(), 0); 
} 

Что я делаю не так? Пожалуйста, внесите предложения по исправлению кода.

ответ

2

Я не уверен, но вы можете попробовать использовать Context.INPUT_METHOD_SERVICE вместо INPUT_METHOD_SERVICE. Некоторые из них - Forcing the Soft Keyboard open.

Вы также можете увидеть How to show soft-keyboard when edittext is focused Смотрите, если выполнены следующие работы:

public void clearEtSearch(View v) { 
    etSearch.setText(""); 
    etSearch.requestFocus(); 

    InputMethodManager manager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);  
    manager.showSoftInputFromInputMethod(etSearch.getWindowToken(), 0); 

} 

В зависимости от ваших потребностей, вы можете попробовать различные константы InputMethodManager как следующее:

public void clearEtSearch(View v) { 
    etSearch.setText(""); 
    etSearch.requestFocus(); 
    InputMethodManager manager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);  
    manager.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 
} 

или

public void clearEtSearch(View v) { 
    etSearch.setText(""); 
    etSearch.requestFocus(); 
    InputMethodManager manager= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    manager.showSoftInput(etSearch, InputMethodManager.SHOW_FORCED); 
} 

Я не пробовал код r не слишком уверен, что можно было бы работать. См. Есть много связанных вопросов. Надеюсь, это сработает для вас.

0

Используйте этот метод и наслаждаться

public void showSoftKeyboard() { 
     try { 
      InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); 
      inputMethodManager.toggleSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.SHOW_FORCED, 0); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
Смежные вопросы