Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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 事件焦点在编辑文本上_Java_Android_Events - Fatal编程技术网

Java 事件焦点在编辑文本上

Java 事件焦点在编辑文本上,java,android,events,Java,Android,Events,我有一个EditText,其中EditText获得焦点,它会改变EditText的功能,当我失去EditText的焦点时,它会再次改变功能 这是我的源代码: tambah = (EditText)rootView.findViewById(R.id.total); tambah.setOnFocusChangeListener(new OnFocusChangeListener(){ @Override public void onFocusChange(View arg0, boolean a

我有一个EditText,其中EditText获得焦点,它会改变EditText的功能,当我失去EditText的焦点时,它会再次改变功能

这是我的源代码:

tambah = (EditText)rootView.findViewById(R.id.total);
tambah.setOnFocusChangeListener(new OnFocusChangeListener(){
@Override
public void onFocusChange(View arg0, boolean arg1) {
    try {
        if(..) //i want to check, i get focus
        {...}else //if i loss focus, the textbox do something
        {...} 

    } catch (Exception e) {
    }
}

对于第一次单击edittext时的结果,edittext没有执行任何操作。当我输入“1000”并失去焦点时,edittext变为“1.000”。但当我再次单击edittext时,它又变为“1000”。请帮助我,如果我的语法不好,请道歉。

布尔标志=true

 tambah = (EditText)rootView.findViewById(R.id.about_header);
            tambah.setOnFocusChangeListener(new OnFocusChangeListener() {

                public void onFocusChange(View v, boolean hasFocus) {
                    flag = !flag;
                    if(v == tambah && flag) {
                        //format your text to 1000 here
                    }
                    else if(v == tambah && !flag) {
                        //format your text to 1.000 here
                    }
                }
            });
编辑: 如果您需要一个简单的格式化程序,可以使用十进制格式化程序

double d = 1.000;
DecimalFormat df1 = new DecimalFormat("#.###");
DecimalFormat df2 = new DecimalFormat("####");
String newD1 = df1.format(d); // 1.000
String newD2 = df2.format(d); // 1000

当我输入两次edittext时,仍然会得到一个“1.000”。我想如果编辑文本有一个“1.000”,我再次点击它,它会再次变成“1000”。我是如何得到它的?是的,我自动生成的变量名可能不同,很高兴你能弄明白:)啊。。所以这不是焦点问题。但是,当您第二次单击editText时,您仍然会聚焦editText。如果你想像你现在告诉我的那样做,你需要用一个标志来控制它。不,我的意思是,当我第一次单击时,edittext没有长度,或者我们称之为“null”。所以它什么都没有,但是当我输入1000,我失去了edittext的焦点,它变成了“1.000”。当我再次单击edittext时,数字再次变为1000。当我失去另一个焦点时,它又变成了1.000。你明白了吗?哈哈哈,我就是这么说的。您需要聚焦另一个视图或手动清除EditText的焦点以更改焦点。我的预编辑版本是这样工作的,当你改变焦点时,比如说你点击另一个EditText,你的文本将变成1.000,当你点击EditText,你的文本将变成1000。您正在尝试根据键盘显示更改文本吗?因为你告诉我的方式不是专注。