Android 如何使用文本监视程序在3个文本之间进行匹配?
我的代码如下所示。但它不起作用。我需要执行简单的加法和减法,根据这两个字段的输入。。。。问题结束了 我需要写这篇文章,因为如果细节不够,代码不仅仅是细节,我不能问这个问题。所以我只是打这个来问我的问题。忽略它,看看下面的代码。多谢各位 Java代码:Android 如何使用文本监视程序在3个文本之间进行匹配?,android,calculator,android-textwatcher,Android,Calculator,Android Textwatcher,我的代码如下所示。但它不起作用。我需要执行简单的加法和减法,根据这两个字段的输入。。。。问题结束了 我需要写这篇文章,因为如果细节不够,代码不仅仅是细节,我不能问这个问题。所以我只是打这个来问我的问题。忽略它,看看下面的代码。多谢各位 Java代码: package com.test.easycount; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.
package com.test.easycount;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements TextWatcher {
EditText num1, num2, sum;
int fnumber, snumber, total;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1 = (EditText) findViewById(R.id.num1);
num2 = (EditText) findViewById(R.id.num2);
sum = (EditText) findViewById(R.id.sum);
num1.addTextChangedListener(this);
num2.addTextChangedListener(this);
sum.addTextChangedListener(this);
fnumber = Integer.parseInt(num1.getText().toString());
snumber = Integer.parseInt(num2.getText().toString());
total = Integer.parseInt(sum.getText().toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (num1.getText().toString().length() > 0 && num2.getText().toString().length() > 0) {
total = fnumber + snumber;
sum.setText(Integer.toString(total));
} else if (num1.getText().toString().length() > 0 && sum.getText().toString().length() > 0) {
snumber = total - fnumber;
num2.setText(Integer.toString(snumber));
} else if (num2.getText().toString().length() > 0 && sum.getText().toString().length() > 0) {
fnumber = total - snumber;
num1.setText(Integer.toString(fnumber));
}
}
}
请帮助我执行此操作……删除初始化变量并将它们粘贴到
后文本更改中
@Override
public void afterTextChanged(Editable s) {
try {
fnumber = Integer.parseInt(num1.getText().toString());
} catch (NumberFormatException e) {
fnumber = 0;
Log.e("numberFormat", e.toString());
}
try {
snumber = Integer.parseInt(num2.getText().toString());
} catch (NumberFormatException e) {
snumber = 0;
Log.e("numberFormat", e.toString());
}
try {
total = Integer.parseInt(sum.getText().toString());
} catch (NumberFormatException e) {
total = 0;
Log.e("numberFormat", e.toString());
}
if (num1.getText().toString().length() > 0 && num2.getText().toString().length() > 0) {
total = fnumber + snumber;
sum.setText(Integer.toString(total));
} else if (num1.getText().toString().length() > 0 && sum.getText().toString().length() > 0) {
snumber = total - fnumber;
num2.setText(Integer.toString(snumber));
} else if (num2.getText().toString().length() > 0 && sum.getText().toString().length() > 0) {
fnumber = total - snumber;
num1.setText(Integer.toString(fnumber));
}
}
您必须在textWatcher中计算fnumber、snumber和total: 假设:
@Override
public void afterTextChanged(Editable s) {
if (num1.getText().toString().length() > 0 && num2.getText().toString().length() > 0) {
fnumber = Integer.parseInt(num1.getText().toString());
snumber = Integer.parseInt(num2.getText().toString());
total = fnumber + snumber;
sum.setText(Integer.toString(total));
} else if (num1.getText().toString().length() > 0 && sum.getText().toString().length() > 0) {
fnumber = Integer.parseInt(num1.getText().toString());
total = Integer.parseInt(sum.getText().toString());
snumber = total - fnumber;
num2.setText(Integer.toString(snumber));
} else if (num2.getText().toString().length() > 0 && sum.getText().toString().length() > 0) {
snumber = Integer.parseInt(num2.getText().toString());
total = Integer.parseInt(sum.getText().toString());
fnumber = total - snumber;
num1.setText(Integer.toString(fnumber));
}
}
并从onCreate中删除fnumber、snumber和total初始化
为了便于计算,最好对每个edittext使用单独的textWatcher:
例:
文本更改后,您必须再次获取fnumber、snumber和total。否。它不起作用。。。在EditText中输入值时应用程序崩溃。我现在该怎么办???是否为其他编辑文本指定值?因为当我输入第一个值时,它是空的。我如何进行验证??你能帮忙吗?如果我输入第二个值,应用程序就关闭了。为什么?添加单独的文本监视程序。最好是计算一下。我只是把它加上作为答案@jde
num1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});