2015-01-20 2 views
0

У меня есть код, чтобы добавить два номера из 2-х текстовых полей вместеjava.lang.NumberFormatException: Invalid INT: «android.support.v7.internal.widget.TintEditText

public void sumNumbers(View v){ 
    EditText input1 = (EditText) findViewById(R.id.input1); 
    int calc1 = Integer.parseInt(String.valueOf(input1)); 
    EditText input2 = (EditText) findViewById(R.id.input2); 
    int calc2 = Integer.parseInt(String.valueOf(input2)); 
    int total = calc1 + calc2; 
    String result = String.valueOf(total); 
    EditText output1 = (EditText)findViewById(R.id.output); 
    output1.setText(result); 
} 

Однако, когда я запускаю. приложение и нажмите на кнопку, я врезаться с этим:

Caused by: java.lang.NumberFormatException: Invalid int: "android.support.v7.internal.widget.TintEditText{b412b358 VFED..CL ........ 292,60-392,100 #7f080041 app:id/input1}" 
      at java.lang.Integer.invalidInt(Integer.java:138) 
      at java.lang.Integer.parse(Integer.java:375) 
      at java.lang.Integer.parseInt(Integer.java:366) 
      at java.lang.Integer.parseInt(Integer.java:332) 
      at com.eren.addingmachine.MainActivity.sumNumbers(MainActivity.java:22) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:525) 
            at android.view.View$1.onClick(View.java:3628) 
            at android.view.View.performClick(View.java:4240) 
            at android.view.View$PerformClick.run(View.java:17721) 
            at android.os.Handler.handleCallback(Handler.java:730) 
            at android.os.Handler.dispatchMessage(Handler.java:92) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:5103) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:525) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
            at dalvik.system.NativeStart.main(Native Method) 

Помощь

+0

Пожалуйста, взгляните на мой ответ. –

ответ

1

Просьба вставить приведенный ниже рабочий код. Я только что запустил и проверил.

public void sumNumbers(View v){ 
     EditText input1 = (EditText) findViewById(R.id.input1); 
     int calc1 = Integer.parseInt(String.valueOf(input1.getText())); 
     EditText input2 = (EditText) findViewById(R.id.input2); 
     int calc2 = Integer.parseInt(String.valueOf(input2.getText())); 
     int total = calc1 + calc2; 
     String result = String.valueOf(total); 
     EditText output1 = (EditText)findViewById(R.id.output); 
     output1.setText(result); 
    } 
+0

спасибо, но почему это не работает, и в чем разница между использованием input2.getText и input2 в одиночку? – 343N

0

Чтобы получить текст, который пользователь вводит в EditText, вы не звоните String.valueOf(), передавая в EditText, как ваш код имеет. Вместо этого позвоните getText().toString() на EditText. Вы все еще можете получить исключения, так как пользователь может не ввести действительный Integer, но вы, по крайней мере, будете ближе.

0

Попробуйте

public void sumNumbers(View v){ 
    try{ 
    EditText input1 = (EditText) findViewById(R.id.input1); 
    input1.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL|InputType.TYPE_NUMBER_FLAG_SIGNED); 
    int calc1 = Integer.parseInt(input1.getText().toString()); 
    EditText input2 = (EditText) findViewById(R.id.input2); 
    input2.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL|InputType.TYPE_NUMBER_FLAG_SIGNED); 
    int calc2 = Integer.parseInt(input2.getText().toString()); 
    int total = calc1 + calc2; 
    String result = String.valueOf(total); 
    EditText output1 = (EditText)findViewById(R.id.output); 
    output1.setText(result); 
    } 
    catch(NumberFormatException e){ 
     Log.e("NumberFormatException" , e.getMessage().toString()); 
    } 
} 

Таким образом, вы можете получить значения из EditText.

Вместо того, чтобы получать refrence в EditText в событии onClick, сделайте это в методе onCreate() Activity.

Смежные вопросы