我试图在用户按下时输入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>
答案 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) {
}
});