将侦听器从一个编辑文本更改为第二个编辑文本

Posted

技术标签:

【中文标题】将侦听器从一个编辑文本更改为第二个编辑文本【英文标题】:change listener from one edittext to a second edittext 【发布时间】: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:***.com/questions/3234607/… 【参考方案1】:

所以你需要做的是:

if (sChecker.equals(""))
   mEditText1.setText("text to be set");
else
   mEditText2.setText("text to be set");

【讨论】:

Eselfar 这就是我所拥有的。但是当我第一次通过 sChecker 进行调试时确实等于 "' 并且按预期工作。第二次 sChecker = '075324864152' 并用新文本覆盖 mEditText1。 能否请您发布您的整个代码,因为错误应该在其他地方? 如果您希望在sChecker.equals("") 时执行mLoc.setText(scanner.getScanResult());,您必须将else 条件放在正确的if 上。目前这段代码在!mScan.equals("") 时执行 android Studio(在 Windows 上)上按 CTRL+ALT+L 以自动格式化您的代码。 (代码→重新格式化代码,来自菜单) 我明白你在说什么。现在玩括号。

以上是关于将侦听器从一个编辑文本更改为第二个编辑文本的主要内容,如果未能解决你的问题,请参考以下文章

java 第一次在单击侦听器上编辑文本

iOS 7:如何在一个视图控制器中将状态栏文本颜色更改为白色,在第二个视图控制器中更改为黑色?

如何使用edittexts在自定义ListView中实现监听器文本更改?

在编辑超链接单击时将标签更改为文本框

Android 文本选择监听器

Java中带有文档侦听器的自动完成文本框