EditText - клавиатура не отображается в фокусе - PullRequest
2 голосов
/ 28 марта 2012

У меня есть эта досадная проблема.Мое приложение имеет 2 действия (вкладки) Activity1: просмотр списка, Activity2: editText + просмотр списка.Приложение начинается с Tab1 (Activity1).Когда я открываю 2nd Activity (с edittext), независимо от того, выбран ли EditText или нет (программируемый), когда я нажимаю на EditText, ничего не происходит (должна появиться softKeyboard).Единственное решение состоит в том, чтобы изменить действие (щелкните виджет Tab1) и вернуться к действию 2 - после замены этой вкладки клавиатура работает нормально.

Часть макета XML с текстом редактирования:

    <EditText
    android:hint="Wyszukaj..."
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:inputType="textAutoComplete|text"
    android:singleLine="true" 
    android:focusable="true"
    android:focusableInTouchMode="true"
>

Вот 2 переопределенных метода из Activity2

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab2);

    this.db = DataBase.getInstance();
    this.ds = DataSource.getInstance();
    this.prepareListView();
}

@Override
protected void onResume() {
    super.onResume();
    this.doubleBackToExitPressedOnce = false;
}
private void prepareListView() {
    sbal = this.db.getAllStops();
    adapter = new StopListAdapter(this, sbal);

    lv = (ListView) findViewById(R.id.tab2list);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(onClick);
    EditText et = (EditText) findViewById(R.id.editText1);
    et.addTextChangedListener(changeWatcher);
    registerForContextMenu(lv);
}

Есть ли у вас какие-либо идеи, как XML-код и код действия должны выглядеть в этом случае?

Ответы [ 4 ]

4 голосов
/ 10 июня 2012

Смотрите этот ответ.Это решило ту же проблему для меня:

Клавиатура не отображается, когда я нажимаю на edittextview в Android?

и пробую этот код

mEditText.clearFocus();
0 голосов
/ 10 сентября 2018

Обходной путь для этого - явный вызов программной клавиатуры для методов onCreate () и onResume ().

 editText.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            if (editText.isEnabled() && editText.isFocusable()) {
                editText.post(new Runnable() {
                    @Override
                    public void run() {
                        Context context = getApplicationContext();
                        final InputMethodManager imm = 
          (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.showSoftInput(editor,InputMethodManager.SHOW_IMPLICIT);
                    }
                });
            }
        }
    });

Надеюсь, это поможет:)

0 голосов
/ 28 марта 2012
try {
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(
                            YourEditText.getWindowToken(), 0);
                } catch (Exception e) {
                    e.printStackTrace();
                }

Попробуйте это с помощью edittext ...

0 голосов
/ 28 марта 2012

попробуйте пропустить две строки о "фокусируемости" из xml.у меня есть что-то очень похожее, и оно работает без них

...