Android KeyBoard不会显示在AlertDialog中

我尝试了很多方法,但我无法在我的活动中显示任何键盘。 键盘只是不显示! 我在我的活动中有一个按钮,当点击时调用下面的方法创建一个listview内部和顶部的对话框(在标题中)有一个edittext。

我希望用户在dit文本中输入一个字母,并且数组适配器将被过滤并仅显示相关结果。 所以一切正常,除了没有显示键盘,所以你不能在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>

编辑文本接缝在对话框打开时获得焦点,颜色发生变化,当我调整fovus状态变为true或false时,

我试过的东西并不起作用:*删除取消按钮*将焦点侦听器直接添加到dittext而不是列表视图,但它无助于alertDialog的此代码:alertDialog.requestFeature()。addContentView (edi,新的LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

  • 尝试使用onclicklisteners而不是相同的效果...
  • 添加这些://edi.setFocusable(true); //edi.setFocusableInTouchMode(true); //edi.requestFocus();
  • *删除edi.addTextChangedListener(filterTextWatcher); (谁知道可能有两个听众对他来说太过分了),但它不起作用,但没有任何东西似乎起作用,并且我检查了其他类似问题的链接,但是甚至没有解决方案,或者它不适用于我:

    以编程方式隐藏/显示Android软键盘

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

    1 Android:当焦点位于EditText时,自动显示软键盘

    任何建议都会受到欢迎,或者我做错了什么? 非常感谢,


    我解决了它!

    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 plus builder ....

    链接地址: http://www.djcxy.com/p/93335.html

    上一篇: Android KeyBoard doesn't show in AlertDialog

    下一篇: how to open input Keyboard on load of activity