【问题标题】:Android Edittext keypress does not fireAndroid Edittext 按键不触发
【发布时间】:2017-10-01 12:27:44
【问题描述】:

每当用户按下时,我都会尝试获取 Enter 键。

我尝试了很多代码,但无论是在模拟器还是在设备中,我都无法按 Enter 键。

这是我的代码:

public class MainActivity extends AppCompatActivity implements View.OnKeyListener {
String barkodsifre;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    EditText sifre = (EditText) findViewById(R.id.barkodsifre);
    sifre.setOnKeyListener(this);
}
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
            (keyCode == KeyEvent.KEYCODE_ENTER)) {
        Log.i("a","b");
        return true;
    }
    return false;
}

}

xml中只有1个edittext和一个textview。数据将通过条形码扫描仪输入到edittext。条码扫描器将在扫描条码的末尾发送“Enter”。 我从条形码末尾的条形码扫描仪发送“输入”,但不知何故它从不处理输入键。

代码中是否遗漏了某些内容或代码完全错误?如何处理来自条形码扫描仪的“输入”键。

这是我的 xml:

 <RelativeLayout
    android:layout_width="368dp"
    android:layout_height="495dp"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="8dp">

    <TextView
        android:id="@+id/lblbarkod"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:ems="10"
        android:inputType="none"
        android:text="Barkod Giriniz!"
        android:textAlignment="center"
        android:textSize="30sp"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/barkodsifre"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignEnd="@+id/lblbarkod"
        android:layout_alignLeft="@+id/lblbarkod"
        android:layout_alignRight="@+id/lblbarkod"
        android:layout_alignStart="@+id/lblbarkod"
        android:layout_below="@+id/lblbarkod"
        android:imeOptions="actionGo|flagNoFullscreen"
        android:inputType="textPassword"
        android:maxLines="1"
        android:ems="10" />

</RelativeLayout>

【问题讨论】:

    标签: android keypress barcode-scanner enter onkeylistener


    【解决方案1】:
    @Override <----------------!!!!!
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                (keyCode == KeyEvent.KEYCODE_ENTER)) {
            Log.i("a","b");
            return true;
        }
        return false;
    }
    

    【讨论】:

    • 对不起,我没听懂你的回答。如果您的意思是我需要在 Onkey 方法之上编写覆盖,我做到了,但它仍然不起作用。
    【解决方案2】:

    试试这个:

    public class MainActivity extends AppCompatActivity implements EditText.OnKeyListener {
        String barkodsifre;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            EditText sifre = (EditText) findViewById(R.id.barkodsifre);
            sifre.setOnKeyListener(this);
        }
    
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                (keyCode == KeyEvent.KEYCODE_ENTER)) {
                Log.i("a","b");
                return true;
            }
            return false;
        }
    }
    

    【讨论】:

      【解决方案3】:
      EditText sifre = (EditText) findViewById(R.id.barkodsifre);
      sifre.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      
        }
      
        @Override
        public void onTextChanged(CharSequence s, int i, int i1, int i2) {
          Log.i("a",s.toString());
        }
      
        @Override
        public void afterTextChanged(Editable s) {
      
        }
      });
      

      【讨论】:

        猜你喜欢
        • 2017-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-12
        • 2013-08-23
        • 2021-01-27
        • 1970-01-01
        相关资源
        最近更新 更多