Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
在android中不按任何键就获得编辑文本值?_Android_Android Edittext - Fatal编程技术网

在android中不按任何键就获得编辑文本值?

在android中不按任何键就获得编辑文本值?,android,android-edittext,Android,Android Edittext,我的要求如下:我需要从多个文本中获取数据 框(EditText),我需要计算并在另一个框中显示它 EditText。这怎么可能?正如我所提到的,没有按钮可以打开 按自动键,它需要显示在“总计”框中 我,但是循环之后,我没有得到我想要的值 全局声明变量,但未获取 文本框 EditText et1, et2, etTot; int x, y, tot; et1 = (EditText) findViewbyId(R.id.edittext1); et2 = (EditText) findViewby

我的要求如下:我需要从多个文本中获取数据 框(
EditText
),我需要计算并在另一个框中显示它
EditText
。这怎么可能?正如我所提到的,没有按钮可以打开 按自动键,它需要显示在“总计”框中

我,但是循环之后,我没有得到我想要的值 全局声明变量,但未获取 文本框

EditText et1, et2, etTot;
int x, y, tot;
et1 = (EditText) findViewbyId(R.id.edittext1);
et2 = (EditText) findViewbyId(R.id.edittext2);
etTot = (EditText) findViewbyId(R.id.edittextTot);

et1.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
                              int count) {
        x = Integer.parseInt(et1.getText().toString().trim());
        System.out
                .println("AMOUNT IS " + et1.getText().toString());

    }

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

    }

    public void afterTextChanged(Editable s) {

    }
});

//same as for et2......

tot = x + y;

etTot.setText(tot.toString());

您可以使用实现TextWatcher并重写以下方法的类:

    @Override
        public void afterTextChanged(final Editable editable) {
            // check if user has filled some value in all editTexts
        }


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


        @Override
        public void onTextChanged(final CharSequence string, final int start,
                final int before, final int count) {
        }
将上述代码用于最后一个
editText
,并检查所有
editText
是否包含某些值,即它们的值不是“”或
null
。如果是,则从这些
editText
中检索所有文本,并计算所需内容。

//全局变量
//global variable
EditText et1,et2,etTot;
int x,y,tot;

// in 0nCreat()
et1 = (EditText)findViewbyId(R.id.edittext1);
et2 = (EditText)findViewbyId(R.id.edittext2);
etTot = (EditText)findViewbyId(R.id.edittextTot);


et1.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
    int count) {
        <Activity_NAME>.this.updateValue();
    }

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

    public void afterTextChanged(Editable s) {
    }
    });

et2.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
    int count) {
        <Activity_NAME>.this.updateValue();

    }

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

    }

    public void afterTextChanged(Editable s) {

    }
    });


//in class       
private void updateValue(){
    String str1 = et1.getText().toString();
    String str2 = et2.getText().toString();

    if(null!=str1 && str1.lenght()>0 && null!=str2 && str2.lenght()>0)                  
    {
        try{
            x= Integer.parseInt(str1.trim());
            y= Integer.parseInt(str1.trim());

            tot = x + y; 
            if(null!=etTot)
                etTot.setText(tot+"");
            else 
                Toast.makeText(this,"etTot is null ",Toast.LENGHT_SHORT).show();
            }catch (NumberFormatExcption nfe){}
        }

    }
编辑文本et1、et2、etTot; 整数x,y,tot; //在0nCreat()中 et1=(EditText)findViewbyId(R.id.edittext1); et2=(EditText)findViewbyId(R.id.edittext2); etTot=(EditText)findViewbyId(R.id.edittextTot); et1.addTextChangedListener(新的TextWatcher(){ public void onTextChanged(字符序列,int start,int before, 整数计数){ .this.updateValue(); } 更改前的公共无效(字符序列、整数开始、整数计数、, 整数后){ } 公共无效后文本已更改(可编辑){ } }); et2.addTextChangedListener(新的TextWatcher(){ public void onTextChanged(字符序列,int start,int before, 整数计数){ .this.updateValue(); } 更改前的公共无效(字符序列、整数开始、整数计数、, 整数后){ } 公共无效后文本已更改(可编辑){ } }); //课堂上 私有void updateValue(){ 字符串str1=et1.getText().toString(); 字符串str2=et2.getText().toString(); 如果(null!=str1&&str1.lenght()>0&&null!=str2&&str2.lenght()>0) { 试一试{ x=Integer.parseInt(str1.trim()); y=Integer.parseInt(str1.trim()); tot=x+y; 如果(null!=etTot) setText(tot+“”); 其他的 Toast.makeText(这个“etTot为null”,Toast.LENGHT_SHORT.show(); }捕获(数字格式nfe){} } }
请发布您的代码,如果@Dheeresh Singh没有将值从块外取出以添加x和y值,应该不会有问题。为什么需要从块外取出?见答案。。。。。。即使在如何更新事件之外?当我在文本框中输入值时,应用程序无法获取tot会在输入值时崩溃,它会抛出以下异常06-06 14:31:17.651:E/AndroidRuntime(1563):致命异常:main 06-06 14:31:17.651:E/AndroidRuntime(1563):java.lang.NullPointerException 06-06 14:31:17.651:E/AndroidRuntime(1563):at in.pack.operations.expenses.ReportExpenses.updateValue(ReportExpenses.java:532)06-06 14:31:17.651:E/AndroidRuntime(1563):at in.pack.operations.expenses.ReportExpenses.access$7(ReportExpenses.java:524)06-06 14:31:17.651:E/AndroidRuntime(1563):in.pack.operations.expenses.ReportExpenses$7.onTextChanged(ReportExpenses.java:238)06-06NullPointerException非常可预测。:)感谢到目前为止代码没有更新,现在它已经更新了,即使我已经更新了它,现在我已经重新启动了eclipse多次,所以现在代码已经更新并得到了结果。感谢支持。非常好的合作。我接受你的答案。再次感谢。