Android Edittext按键不会触发

时间:2017-05-03 15:15:54

标签: android keypress barcode-scanner enter onkeylistener

我试图在用户按下时输入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。数据将通过条形码扫描仪输入编辑文本。条形码扫描器将在扫描条形码的末尾发送“Enter”。 我在条形码的末尾从条形码扫描仪发送'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>

3 个答案:

答案 0 :(得分:0)

@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;
}

答案 1 :(得分:0)

试试这个:

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;
    }
}

答案 2 :(得分:0)

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) {

  }
});