【发布时间】:2018-11-08 08:22:09
【问题描述】:
在这方面寻求帮助。 我在一项活动中有 2 个 EditTexts。当用户进入屏幕时,第一个 EditText 具有从扫描仪输入的焦点。用户扫描条形码,程序通过从数据库中找到相应的项目来验证它是一个很好的读取。如果找到我正在尝试让第二个 EditText 获得焦点以进行下一次扫描的项目。
我是 Java 新手(VB Windows 开发人员),正在努力实现这一目标。无论我每次扫描第二个条形码时尝试了什么,第一个 EditText 都会得到扫描的内容。
我很难弄清楚如何将侦听器更改为专注于 Second EditText。
有人可以解释一下如何在有效的第一次扫描后将焦点更改为第二个 EditText。
public void listener() {
scanner.scannerListener = new ScannerListener() {
@Override
public void listener() {
sChecker = mEntryText.getText().toString();
if (sChecker.equals("")) ;
{
mScan = scanner.getScanResult();
Timber.d("The barcode is " + mScan);
if (!mScan.equals("")) {
int lmScan = mScan.length();
if (lmScan > 15) {
checkGs1Barcode();
}
String s = DatabaseMgr.VerifyItem(mScan);
if (s.length() > 1) {
if (s.equalsIgnoreCase("Unknown Item###")) {
Toast.makeText(getApplicationContext(), "Unknown Item", Toast.LENGTH_SHORT).show();
} else if (s.equalsIgnoreCase("Multiple Items###")) {
setupMultiItems(mScan);
} else {
String[] sArr = s.split("\\#");
String IsItem = sArr[0];
String IsItemDesc = sArr[1];
String isLevel = sArr[2];
String isLvlDesc = sArr[3];
Button ItemDescText = findViewById(R.id.btnDesc);
ItemDescText.setText(IsItemDesc);
TextView ItemUPCText = findViewById(R.id.editUPC);
ItemUPCText.setText(mScan);
Integer iQTY = ValidateQTYinArea(IsItem, "RTN", myArea, isLevel);
TextView mQty = findViewById(R.id.txtDetail);
String myResult = "RTN - " + myArea + " - " + isLvlDesc + " - " + iQTY;
mQty.setText(myResult);
mEntryText.setBackgroundColor(getResources().getColor(R.color.colorWhite));
mLoc.setBackgroundColor(getResources().getColor(R.color.colorYellow));
mLoc.requestFocus();
}
}
} else {
mLoc.setText(scanner.getScanResult());
}
}
}
};
}
mLoc.setText 行没有被命中
【问题讨论】:
-
你在这里混合了三件事:监听器、焦点、设置值。这是3个不同的概念。基本上你想要做的是设置一个值。如果您希望我们提供帮助,请发布您的代码,因为我们无法猜测您尝试了什么
-
创建全局静态变量。
-
这是我最后一次尝试的听众。
-
在第一个监听器中,将焦点放在第二个编辑文本上,根据这个现有的 SO:stackoverflow.com/questions/3234607/…