Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.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 如何在EditText中自动添加千个分隔符?_Java_Android_Xml_Android Layout_Android Activity - Fatal编程技术网

Java 如何在EditText中自动添加千个分隔符?

Java 如何在EditText中自动添加千个分隔符?,java,android,xml,android-layout,android-activity,Java,Android,Xml,Android Layout,Android Activity,当用户使用主题中的最后一个解决方案键入时,我想在EditText中自动添加1000个分隔符 我已经制作了一个单独的java文件作为一个类,如前所述,并粘贴了给定的代码。但是我不知道如何修改我的活动代码以达到预期的效果 以下是我的XML代码: <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inp

当用户使用主题中的最后一个解决方案键入时,我想在EditText中自动添加1000个分隔符

我已经制作了一个单独的java文件作为一个类,如前所述,并粘贴了给定的代码。但是我不知道如何修改我的活动代码以达到预期的效果

以下是我的XML代码:

        <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:id="@+id/editText"
        android:layout_weight="1"/>
}


如果有任何帮助,我们将不胜感激。

首先,活动课上的编辑文本参考在哪里

第二,正如您提到的链接所说,您必须在edittext中添加文本监视程序,并重置用户的输入文本

您可以在活动中使用以下代码:

private EditText editText;
private final TextWatcher watcher = new TextWatcher() {

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

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

    @Override
    public void afterTextChanged(Editable view) {
        String s = null;
        try {
            s = String.format("%,d", Long.parseLong(view.toString()));
        } catch (NumberFormatException e) {
        }
        editText.removeTextChangedListener(watcher);
        editText.setText(s);
        editText.addTextChangedListener(watcher);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_costof_hearing);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    ...
    editText = (EditText) findViewById(R.id.editText);
    editText .addTextChangedListener(watcher);
}
我自己还没有检查它,这可能会导致更改光标在编辑文本中的位置。检查它,并更新我太plz:)


暂时删除TextWatcher的原因是,如果watcher仍然使用EditText,则在调用
EditText.setText
时,它将再次被调用,并创建一个循环,该循环将导致堆栈溢出异常。

可能有用:@stkent:猜测它仅用于作为结果字符串更改格式。不是活的改变…谢谢你,先生!我按照你说的做了,第三个数字被逗号除了,但是有问题。。第一:数字以相反的格式输入。因此123导致321。第二:键入第五位数字后,edittext将重置。你是否考虑过我提到的单独java类?新浪再上不管怎样,我从你的回答中得到了一点线索,并设法自己使用了这门课。。非常感谢亲爱的朋友:)如果答案对你有帮助,你应该接受答案
private EditText editText;
private final TextWatcher watcher = new TextWatcher() {

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

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

    @Override
    public void afterTextChanged(Editable view) {
        String s = null;
        try {
            s = String.format("%,d", Long.parseLong(view.toString()));
        } catch (NumberFormatException e) {
        }
        editText.removeTextChangedListener(watcher);
        editText.setText(s);
        editText.addTextChangedListener(watcher);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_costof_hearing);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    ...
    editText = (EditText) findViewById(R.id.editText);
    editText .addTextChangedListener(watcher);
}