Android 没有显示键盘。我将 Adapter 与 Edittext indise AlertDialog 一起使用

Android dosen't show me keybord. I use Adapter with Edittext indise AlertDialog

AlertDialog 工作正常,它向我展示了我的适配器,但是当我单击我的适配器中的 EditText 时,键盘没有打开。 除此之外:

 Log.d(LOG_TAG, "item:"+item) 

onClickListener 内部不起作用。

public class AddProduct extends Activity implements OnClickListener {

  String LOG_TAG;
  Button fillFields; 
  ArrayList<String> someArray;
  BoxAdapter boxAdapter;

  @SuppressWarnings("deprecation")
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.newproduct);

    fillFields=(Button)findViewById(R.id.fillFields);
    fillFields.setOnClickListener(this);
    someArray=new ArrayList<String>();
    boxAdapter = new BoxAdapter(this, someArray);
    }

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    switch (v.getId()){
    case R.id.fillFields:

          AlertDialog.Builder alert = new AlertDialog.Builder(this);
            alert.setTitle("Поля товара");
             alert.setAdapter(boxAdapter, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int item) {
                        Log.d(LOG_TAG, "item:"+item);
                    }});
            alert.create().show();   
    break;
    }
    } 
    }

和适配器:

 public class BoxAdapter extends BaseAdapter {

  Context ctx;
  LayoutInflater lInflater;
  ArrayList<String> objects;
  OnEditorActionListener myEditorActionListener;
  String LOG_TAG;
  EditText editText;

BoxAdapter(Context context, ArrayList<String> getFields){
      ctx = context;
        objects = getFields;
        lInflater = (LayoutInflater) ctx
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return objects.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return objects.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
     return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
       // используем созданные, но не используемые view
    View view = convertView;
    if (view == null) {
    view = lInflater.inflate(R.layout.addproduct_item, parent, false);
    }

    ((TextView) view.findViewById(R.id.addProductTextView)).setText(objects.get(position));

      editText = (EditText) view.findViewById(R.id.addProductEditText);

    return view;

}

}

所以,我做错了什么?谢谢。

好吧,你必须展示所有代码而不是部分代码,最好展示你的 logcat,

但是,要强制在对话框中显示键盘,您可以使用它(我不知道这是否是最好的方法,但是,这是一种方法):

    YourDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

这取决于您如何获得对话框,但是,如果它使用 fragmentDialog 或方法(已弃用)onCreateDialog,您应该将对话框 var 声明为 final。

此致。