onKeylistener在模拟器上正常工作,但不能在Android设备上工作

时间:2013-11-18 11:40:49

标签: android android-layout android-fragments

我正在开发一个Android项目,我需要根据编辑文本视图上的更改来更改表格布局。代码在模拟器上正常工作。但它并不适用于实际的设备。在这种情况下,我也使用片段。我的 onKey 监听器如下所示。

EditProduct.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            Editable prx=EditProduct.getText();

            String new_prx=prx.toString();

            //mini_productList
            int count=0;
            if (new_prx.equals("")) {

                loadtableProducts(productList);

            }else {

                for(int i=0;i<productList.size();i++){

                    if (productList.get(i).getDescription().toString().substring(0, (new_prx.length())).equalsIgnoreCase(new_prx)) {

                        mini_productList.add(productList.get(i));
                        count++;

                    }

                }

                loadtableProducts(mini_productList);

                //Toast.makeText(getActivity(), "No of products "+count, Toast.LENGTH_SHORT).show();
            }


            return false;
        }
    });

布局中的编辑文字视图如下所示

 <EditText
                android:id="@+id/edit_product"
                android:layout_width="@dimen/txtWidth"
                android:layout_height="@dimen/txtHeight"
                android:background="@color/transparent"
                android:hint="Enter the product name"
                android:singleLine="true"
                android:textColor="@color/black"
                android:textSize="@dimen/boldtext" />

此外,我添加了一个Toast,以确保它在设备上工作,并在输入密钥时显示。 所以有人可以帮助我解决这个问题。 谢谢!

1 个答案:

答案 0 :(得分:2)

EditText.setOnKeyListener的文档声明:

“在此视图中按下硬件键时注册要调用的回调。按下软件输入方法通常不会触发此侦听器的方法。”

模拟器使用的是硬件键盘,而您的设备使用的是软件键盘。我建议您使用“addTextChangedListener”替代。

但是我注意到你说你的Toast确实表明输入了一个键。那么在使用实际设备时,您实际上是在输入OnKeyListener吗?如果是这样,我会删除我的答案。