Клавиатура Android не отображается в AlertDialog - PullRequest
1 голос
/ 02 сентября 2011

Я пробовал так много способов, но я просто не могу получить отображение клавиатуры в своей деятельности.Клавиатура просто не показывает !!!У меня есть кнопка в моей деятельности, которая при нажатии вызывает метод ниже, который создает диалог со списком внутри и сверху (в заголовке), есть текст редактирования.

Я бы хотел, чтобы пользователь ввел букву в тексте dit, и адаптер массива будет отфильтрован и покажет только соответствующие результаты.Так что все работает отлично, за исключением того, что не отображается клавиатура, поэтому вы не можете вводить любой текст в текст.Вот код:

private void buildDialog(final int cual) {

    // dialog que va mostrar una lista de clientes o articulos

    AlertDialog.Builder ab = new AlertDialog.Builder(this);
    if(cual==1){
    mAdapter2 = new EventAdapter(this, clientes);
    }else if (cual==2){
        mAdapter2=new EventAdapter(this, ventas);
    }


    lv2=new ListView(this);
    edi=new EditText(this);
            edi.setHint("empiece a escribir");
    edi.addTextChangedListener(filterTextWatcher);
    lv2.addHeaderView(edi);
    lv2.setAdapter(mAdapter2);
    lv2.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(v.equals(edi) && hasFocus==true){
                      alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
            }
        }
    });
ab.setView(lv2);
alertDialog = ab.create();
alertDialog.setButton(getResources().getString(R.string.cancelar),
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();

                }
            });


    alertDialog.show();
}

В манифесте, который у меня есть для этого действия:

<activity android:name="com.tresipunt.iturist.Ventas2"
        android:label="@string/ventas"
        android:screenOrientation="portrait"
        android:configChanges="keyboard">
    </activity>

Текстовый шов edittext, чтобы получить фокус, когда диалоговое окно открывается, получает измененный цвет икогда я отлаживаю, состояние fovus меняется на true или false, с признанием

Вещи, которые я пробовал, и которые не работают: * удаление кнопки отмены * добавление слушателя фокуса к тексту непосредственно вместо представления спискано это не помогает * этот код для alertDialog: alertDialog.requestFeature (). addContentView (edi, new LinearLayout.LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

  • вместо того, чтобы пытаться вместо этогоно тот же эффект ...
  • добавление таких: //edi.setFocusable(true);//edi.setFocusableInTouchMode(true);//edi.requestFocus();

* удаление edi.addTextChangedListener (filterTextWatcher);(Кто знает, может быть, 2 слушателя - это слишком много для него), но это не работает, но НИЧТО, кажется, не работает, и я проверил другие ссылки с похожей проблемой, но либо нет даже решения, либо оно не работает для меня:

Программно скрыть / показать программную клавиатуру Android

[http://groups.google.com/group/android-developers/browse_frm/thread/17210d784766602d/d430c900a9c4019c?pli=1]

1 Android: показать программное обеспечениеклавиатура автоматически, когда фокус находится на EditText

Любой совет будет приветствоваться или есть что-то, что я делаю неправильно?Большое спасибо,

1 Ответ

4 голосов
/ 02 сентября 2011

Я решил это !!!

Dialog dialog = new Dialog(this);
    if(cual==1){
        mAdapter2 = new EventAdapter(this, clientes);
    } else if (cual==2){
        mAdapter2=new EventAdapter(this, ventas);
    }


    lv2=new ListView(this);
    edi=new EditText(this);
    lv2.addHeaderView(edi);
    lv2.setAdapter(mAdapter2);
    dialog.setContentView(lv2);

    dialog.setCancelable(true);

    dialog.show();

просто нужно использовать простой диалог, а не AlerertDialog плюс строитель ....

...