在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多次,所以现在代码已经更新并得到了结果。感谢支持。非常好的合作。我接受你的答案。再次感谢。