当前位置: 首页 > 知识库问答 >
问题:

文本观察程序-不同的最后字符位置

仲孙鸿飞
2023-03-14

长话短说,我正面临这个问题:我将一个textwatcher附加到一个edittext上。一旦“1”是上面写的最后一个字符,就应该用字母“a”替换它。但这里有一个问题:我想只要“a”也是edittext上写的最后一个字符(用户按下“a”),除了通过前面的方法,还有一些事情要做。但是当我测试它并输入“1”时,它通常会被转换为“a ”,我提到的事情也完成了。我似乎无法找到一种方法来超越这一点,可以给一些建议吗?非常感谢。我使用:

public void afterTextChanged(Editable s) {
    //TODO Auto-generated method stub
    if (s.length() > 0 && s.toString().charAt(s.length() - 1) == '1') {
        current_string = s.toString().substring(0, (s.length() - 1));
        et.setText(current_string + "a");
        length = s.length();
        et.setSelection(length);
    }
    else if (s.length() > 0 && s.toString().charAt(s.length() - 1) == 'a') {
        //do some things
    }

共有2个答案

邵奇
2023-03-14

你是说?

1)当用户最后输入1时,它应该替换为“a”。2)当用户单独输入“a”时(未被步骤1转换),它应该做其他事情

amount1.addTextChangedListener(new TextWatcher() {

            int flagg;

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {

                System.out.println("flagg"+s+"#"+flagg );
                if (s.length() > 0  && s.toString().charAt(s.length() - 1) == '1' )
                {   System.out.println("Converting and doing NOthing");
                    flagg=1;
                    String current_string = s.toString().substring(0,(s.length() - 1));
                    amount1.setText(current_string + "a");
                    int length = s.length();
                    amount1.setSelection(length);

                } 
                else if (s.length() > 0     && ( s.toString().charAt(s.length() - 1) == 'a') && flagg == 0 )  {
                    System.out.println("Staying same and doing Something");

                    amount2.setText(amount2.getText().toString() + "Z");
                    // do some things
                }

            }

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

                if (start != 0) {

                    if ((s.toString()).substring(s.length() - 1).equals("a")) {
                        flagg = 1;
                    }
                    if ((s.toString()).substring(s.length() - 1).equals("1")) {
                        flagg = 0;
                    } else {
                        flagg = 0;
                    }

                }

            }

            @Override
            public void afterTextChanged(Editable arg0) {

            }
        });

//new flagg is set in if condition
于正志
2023-03-14

试试这个

public void afterTextChanged(Editable s) {

if (s.length() > 0 && s.toString().charAt(s.length() - 1) == 'a') {
       //do some things
}
if (s.length() > 0 && s.toString().charAt(s.length() - 1) == '1') {
    current_string = s.toString().substring(0, (s.length() - 1));
    et.setText(current_string + "a");
    length = s.length();
     et.setSelection(length);

}
 类似资料:
  • 我试图做的是这样的:用户在编辑文本中输入文本。示例:“ab”,然后当他输入一个像' 但这给了“abqc”!!!我可能足够接近,但仍然找不到解决方案。有什么想法吗?多谢

  • 我必须取编辑文本的值并将其除以1.21....错误在哪里 错误:

  • 我有一个字段,上面有一个客户文本观察者。在一段代码中,我需要更改EditText中的值,我使用<code>.setText(“whather”)来执行此操作。 问题是,只要我做了更改,就会调用<code>afterextchanged 我需要 afterTextChanged 方法中的文本,因此不建议删除 。

  • 我有一个程序,其中有一个editText。我想实现TextWatcher以反映总editText中的更改。当编辑框达到最大字符数限制10时,我想显示警告对话框。当我实现文本观察程序时,它可以工作,但当它达到10个字符时,它显示两个警告框。这是我的密码

  • 我在工具栏上有一个搜索视图图标,通过创建选项菜单(菜单菜单)。单击该图标将创建一个 EditText 行,供用户输入搜索输入。我有一个文本观察器()附加到编辑文本行,以便当文本添加到该行时(在文本更改可编辑之后),搜索查询方法通过搜索房间数据库的视图模型运行。 我的问题是,观察者甚至在用户输入任何查询之前就开始创建了。使用Toasts,我能够在用户按下SearchView图标时以及用户输入任何搜索

  • 我目前正在努力使用这个温度转换器应用程序。这个应用程序的工作原理是,如果我在空白文本中输入一个数字,它将计算到其他温度单位,而无需点击按钮(由文本观察者) 在这里,我需要使用Double value从EditText中提取数字,并使用该值生成一个等式,然后将其插入结果视图。所以在本例中,我使用: 在EditText中插入的值是多少。 应用程序一直在运行,直到我在文本字段中输入任何数字,应用程序崩溃