Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中输入第一个字符后立即输入字符_Java_Android_String_Android Edittext - Fatal编程技术网

Java 在android中输入第一个字符后立即输入字符

Java 在android中输入第一个字符后立即输入字符,java,android,string,android-edittext,Java,Android,String,Android Edittext,我有一个编辑文本和输入作为电话号码。我想在输入第一位数字后立即添加特定的区号。比如说 我输入6,编辑文本将显示+16 我正在尝试使用textWatcher实现这一点,但不确定如何将我键入的数字放在“+1”之后 但这里的问题是,当我输入第一个数字时,+1被填充,但通过键盘键入的数字没有显示出来。我不确定这里出了什么问题 同样,当我退格并从文本中删除1时,会发生这种情况,但我无法删除+(这会自动填充)。在填充+1后返回空间时,我不想删除+1 这可能吗?如果可能,怎么可能 谢谢 更换 numberTe

我有一个编辑文本和输入作为电话号码。我想在输入第一位数字后立即添加特定的区号。比如说

我输入6,编辑文本将显示+16

我正在尝试使用textWatcher实现这一点,但不确定如何将我键入的数字放在“+1”之后

但这里的问题是,当我输入第一个数字时,+1被填充,但通过键盘键入的数字没有显示出来。我不确定这里出了什么问题

同样,当我退格并从文本中删除1时,会发生这种情况,但我无法删除+(这会自动填充)。在填充+1后返回空间时,我不想删除+1

这可能吗?如果可能,怎么可能

谢谢

更换

numberText.settext("+1");
numberText.settext("+1");

您没有正确更新现有文本。

替换

numberText.settext("+1");
numberText.settext("+1");

您没有正确更新现有文本。

请使用以下方法:

public void afterTextChanged(Editable s) 
        {               
            if(s.length() == 1)
            {
                String text = numberText.getText().toString();
                numberText.settext("+1"+text);
                numberText.setSelection(numberText.getText().length());
            }
        }
其他的没问题,可能是

使用这个:

public void afterTextChanged(Editable s) 
        {               
            if(s.length() == 1)
            {
                String text = numberText.getText().toString();
                numberText.settext("+1"+text);
                numberText.setSelection(numberText.getText().length());
            }
        }

另一个是OK,可以输入+1后的下一个字符,您应该使用:

numberText.settext("+1" + s.toString());
对于退格+1,您需要keyListener:(不适用于软键盘)

编辑
尝试破解方法:

public void afterTextChanged(Editable s) 
{               
  if(s.length() == 0 || s.toString().equals("+"))
  {
    numberText.settext("+1");
  }
  else if(s.length() == 1)
  {
    numberText.settext("+1"+s.toString());
    numberText.setSelection(numberText.getText().length());
  }
}

输入+1后的下一个字符时,应使用:

numberText.settext("+1" + s.toString());
对于退格+1,您需要keyListener:(不适用于软键盘)

编辑
尝试破解方法:

public void afterTextChanged(Editable s) 
{               
  if(s.length() == 0 || s.toString().equals("+"))
  {
    numberText.settext("+1");
  }
  else if(s.length() == 1)
  {
    numberText.settext("+1"+s.toString());
    numberText.setSelection(numberText.getText().length());
  }
}
替换

numberText.settext("+1");
numberText.settext("+1");

替换

numberText.settext("+1");
numberText.settext("+1");


谢谢你的快速回复。。v、 getText()不可用?@TheDevMan编辑了我的答案。试试看。或者你可以先转换它。EditText w=(EditText)v;我已经检查过了,实际上没有人打电话。有什么问题吗?那你用的是软键盘。我的anwer不能用软键盘工作。我会用不同的方法更新我的答案。我正在使用软键盘。谢谢你的快速回复。。v、 getText()不可用?@TheDevMan编辑了我的答案。试试看。或者你可以先转换它。EditText w=(EditText)v;我已经检查过了,实际上没有人打电话。有什么问题吗?那你用的是软键盘。我的anwer不能用软键盘工作。我将使用差异方法更新我的答案我正在使用软键盘。你的答案和ZygoteInit的答案有什么区别?你的答案和ZygoteInit的答案有什么区别?明白了,但当我输入数字,然后退格时,“+1”1被删除并输入+:(明白了,但当我输入数字,然后退格“+1”1被删除并输入了“+”:(