您好我正在处理一项要求,如果我在第一个文本字段中输入1,它将增加并在第二个文本字段中显示2,我有两个编辑文本(文本字段)。
我正在获得功能,但问题是当我输入一个数字并试图通过按回空间崩溃来删除它。
我想在从第一个文本框中删除所有内容时设置为零。
这是代码。
我的 xml 代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="20dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Input Text" />
<EditText
android:id="@+id/myTextBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberSigned" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="After Calculation" />
<EditText
android:id="@+id/outputBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberSigned" />
我的java代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.type2);
final EditText outputTextBox = (EditText) findViewById(R.id.outputBox);
final EditText myTextBox = (EditText) findViewById(R.id.myTextBox);
myTextBox.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
String inputs = myTextBox.getText().toString();
int i = Integer.parseInt(inputs);
i++;
outputTextBox.setText(String.valueOf(i));
}
});
}
答案 0 :(得分:1)
您必须检查null或空字符串。 try
和catch
块帮助那里:
try {
String inputs = myTextBox.getText().toString();
int i = Integer.parseInt(inputs);
i++;
outputTextBox.setText(String.valueOf(i));
} catch (NumberFormatException e) {
// Invalid integer received (empty or null string)
outputTextBox.setText("");
}
说明:
如果传递null或空字符串,则 Integer.parseInt
抛出NumberFormatException
。如果是这种情况,您只需清除outputTextBox
。
解决方案2:
按照@rossum的建议手动检查空字符串。
if (TextUtils.isEmpty(inputs)) {
outputTextBox.setText("");
} else {
int i = Integer.parseInt(inputs);
i++;
outputTextBox.setText(String.valueOf(i));
}
答案 1 :(得分:1)
更改 onTextChanged ,如下所示:
public void onTextChanged(CharSequence s, int start, int before,
int count) {
String inputs = myTextBox.getText().toString();
if(inputs.isEmpty())
outputTextBox.setText("0");
else{
int i = Integer.parseInt(inputs);
i++;
outputTextBox.setText(String.valueOf(i));
}
}
});