当我删除android中的数字位数(文本字段中的内容)时,应用程序崩溃

时间:2014-10-25 15:53:31

标签: java android xml

您好我正在处理一项要求,如果我在第一个文本字段中输入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));
        }
    });
}

2 个答案:

答案 0 :(得分:1)

您必须检查null或空字符串。 trycatch块帮助那里:

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));
        }
    }
});