当前位置: 首页 > 面试题库 >

文字变更监听器上的android

柴茂材
2023-03-14
问题内容

我遇到的情况是有两个领域。field1和field2。field2当field1更改时,我只想做空,反之亦然。因此,最后只有一个字段具有内容。

field1 = (EditText)findViewById(R.id.field1);
field2 = (EditText)findViewById(R.id.field2);

field1.addTextChangedListener(new TextWatcher() {

   public void afterTextChanged(Editable s) {}

   public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
   }

   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
      field2.setText("");
   }
  });

field2.addTextChangedListener(new TextWatcher() {

   public void afterTextChanged(Editable s) {}

   public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
   }

   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
     field1.setText("");
   }
  });

如果仅附加addTextChangedListener到它,效果很好field1,但是当我对两个字段都执行此操作时,应用程序将崩溃。显然是因为它们试图无限期地改变彼此。一旦field1更改,field2此刻 清除就会field2被更改,因此它将清除field1,依此类推…

有人可以提出任何解决方案吗?


问题答案:

你可以添加一个检查以仅在字段中的文本不为空时(即,长度不为0时)清除。

field1.addTextChangedListener(new TextWatcher() {

   @Override
   public void afterTextChanged(Editable s) {}

   @Override    
   public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
   }

   @Override    
   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
      if(s.length() != 0)
        field2.setText("");
   }
  });

field2.addTextChangedListener(new TextWatcher() {

   @Override
   public void afterTextChanged(Editable s) {}

   @Override
   public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
   }

   @Override
   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
      if(s.length() != 0)
         field1.setText("");
   }
  });


 类似资料:
  • 有人能提出什么解决办法吗?

  • 问题内容: 我的任务是在每次日期更改时(每12am)触发一种刷新或重置我的应用程序的方法。我试图在网上搜索答案,但找不到任何东西。我可以使用Android中的任何方法/或侦听器吗?或任何方法?有什么建议吗? 问题答案: 是的,您可以在Android上收听日期/时间更改。为此,请在您的Activity中显式注册以下意图过滤器的BroadcastReceiver: 此意图每分钟发送一次。您 不能通过

  • 我做了一个程序,动态地从一个面板获取数据,但是我的代码需要用户点击输入按钮来更新数据。有没有一个更改监听器或其他监听器可以在任何时候更新Jtext field中的数据?谢谢!

  • 我在一个编辑文本上使用textChangedListener来显示/隐藏一个浮动的动作按钮。 一切都按预期工作。如果编辑文本不为空,则显示 fab,如果为空,则隐藏 fab。 但是我注意到,在使用退格时,要删除输入的文本,删除第一个空格会触发隐藏fab,然后快速fab显示,因为editText不为空。 我环顾四周,没有看到任何关于这方面的信息。所以我一定做错了什么,但我不确定是什么。 下面是我的实

  • 当编辑文本上的回车键被按下时,我试图简单地向listview添加一些内容。我在按钮上也有一个点击监听器,它将调用相同的函数将单词添加到listview。按钮工作正常,直到我添加了文本监视程序。现在,如果我调用的函数在监听器中,如果我按回车键或按下按钮,整个应用程序就会崩溃。如果我从文本监视程序中删除类,那么如果我按下回车键,应用程序不会崩溃,但如果我按下按钮,它会崩溃。有什么想法吗?我已经很久没用

  • 我对primefaces ajax调用侦听器有问题。(primefaces 4.0、JSF 2.0、JBoss 6.1.1) 这是我定义的SelectOne菜单: 这是我的managedBean的主要部分 当我打开页面时,日志告诉我init方法已被执行,selectOneMenus已正确填充,因此我假设托管bean正在工作。如果我更改了我在上面写的selectOneMenu,我想修改的select