если постановка проблемы в андроиде - PullRequest
0 голосов
/ 07 марта 2011

У меня есть метод, который проверяет нулевое значение из editText по нажатию кнопки, например так:

public void myClickHandler09(View chv){
if (text9.equals("")){
    text9.setText("0");
}else{
    converter(text9);
}}

Метод

converter(text9);

выглядит так:

public void converter(View view){
switch (view.getId()) {
case R.id.Button09:
    RadioButton RadioButtons = (RadioButton) findViewById (R.id.RadioButton901);
    float inputValue = Float.parseFloat(text9.getText().toString());


     if (RadioButtons.isChecked())  {
            text9.setText(String
                        .valueOf(convertRadioButtons(inputValue)));
   }
       break;

}}

private double convertRadiobuttons(float inputValue){
    return inputValue * 6.4516;
}

Метод больше, но здесь я назвал только одну радиокнопку, чтобы сократить ее.Прямо сейчас, хотя оператор if, кажется, абсолютно ничего не делает, и поэтому остальная часть кода не работает.Если я удаляю метод и переименовываю

converter(View view){

в

myClickHandler09(View view){

, тогда код работает и до тех пор, пока вы не введете нулевое значение в EditText (затем он вылетит)

Что я делаю не так именно здесь?

ПРИМЕЧАНИЕ: имя метода "myClickHandler09" связано с кнопкой как Android: onClick в xml

Ответы [ 3 ]

1 голос
/ 07 марта 2011

Вам нужно сделать if("".equals(text9.getText().toString())) { ...

toString() есть, потому что TextView вернет CharSequence, который может быть или не быть String.

Прямо сейчасвы сравниваете TextView itself to "", а не String, который он показывает.

Edit - Что касается сбоя, вы также хотите поймать NumberFormatException, который Float.parseFloat () бросков.

float inputValue = 1.0f; // some default value, in case the user input is bad.
try {
    inputValue = Float.parseFloat(text9.getText().toString());
} catch (NumberFormatException e) {
    // possibly display a red flag next to the field
}
1 голос
/ 07 марта 2011

Почему бы не попробовать

if ("".equals(text9.getText())) {

} else {

}

По сути, вы должны getText() сделать из TextView, а не equals строку с TextView.

0 голосов
/ 08 марта 2011

В вашем коде я не понимаю, что вы вызываете:

преобразователь (text9);

, передавая EditText, но заменяя преобразователь (View view) наимя функции myClickHandler09 (например, так):

myClickHandler09 (представление представления) {

кнопка, нажимаемая при вызове этой функции (если вы определили ее в параметре xml макета onClick).

Итак, чтобы сопоставить это поведение с вашим текущим кодом, попробуйте это:

public void myClickHandler09(View btnView){
    if (text9.equals("")){
        text9.setText("0");
    } else {
        converter(btnView);
    }
}

Возможно, я упустил смысл вашего поста, но я думаю, что это часть вашей проблемы.Кроме того, вместо .equals ("") я предпочитаю (text9.toString (). Length ()> 0) просто кажется немного более логичным, но я немного педантичен.

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