Принудительно закрыть, когда все символы удалены из поля EditText - PullRequest
0 голосов
/ 27 апреля 2011

Мое приложение принудительно закрывается, когда я удаляю последний из моих персонажей из текстового поля редактирования.например, если я введу 456, 6 и 5 не вызовут проблем, но удаление 4 приведет к ошибке.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    setupViews();

}
private void setupViews(){
    milesBox = (EditText)findViewById(R.id.enter_miles);

    try{
    milesBox.addTextChangedListener(new TextWatcher(){

        @Override
            public void afterTextChanged(Editable s) {

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

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                addMiles();
            }
        });
    }catch (Exception e){
        this.showAnswer.setText("TextWatcher error");
        this.milesBox.setText("");
    }



        }// end setupviews()


public void addMiles(){
    try{
        String edMiles = this.milesBox.getText().toString();
        if(null==edMiles){
        this.showAnswer.setText("Please input miles");
        this.milesBox.setText(null);
    }
    double amiles = Double.parseDouble(edMiles);
    setMiles(amiles);
    } 
    catch (Exception e){
        this.showAnswer.setText("Please input miles in numbers");
        this.milesBox.setText(null);
        addMiles();
        //TODO check if this line causes errors
    }
}


public double getMiles() {
    return miles;
}

public void setMiles(double miles) {
    this.miles=miles;
}

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

Здесь вы пропустили еще что-то здесь

if(null==edMiles){
        this.showAnswer.setText("Please input miles");
        this.milesBox.setText(null);
    }
 else{

    double amiles = Double.parseDouble(edMiles);
    setMiles(amiles);
}

здесь это выдаст исключение формата чисел, потому что вы разбираете пустую строку

0 голосов
/ 27 апреля 2011

Изменить

if(null==edMiles){

На

if(null == edMiles || edMiles.length() == 0) {

или лучше использовать TextUtils.isEmpty(edMiles).Когда вы удаляете последний символ из текста редактирования, метод toString не возвращает ноль, в результате он возвращает "" (пустая строка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...