2017-02-06 5 views
-2

Im новое для Android и мало проблем при запуске этого приложения. Всякий раз, когда я нажимаю кнопку «ДОБАВИТЬ» в моем приложении, она останавливается. Пожалуйста, помогите мне. Im прикрепляет мой xml и java-код.Принудительная установка Android останавливается при нажатии кнопки

Это ошибка Im получение:

I/OpenGLRenderer: Initialized EGL, version 1.4 
W/EGL_emulation: eglSurfaceAttrib not implemented 
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xe99d1f80, error=EGL_SUCCESS 
D/AndroidRuntime: Shutting down VM 
E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: akshay.com.myfirstapp, PID: 13085 
       java.lang.NumberFormatException: Invalid int: "" 
        at java.lang.Integer.invalidInt(Integer.java:138) 
        at java.lang.Integer.parseInt(Integer.java:358) 
        at java.lang.Integer.parseInt(Integer.java:334) 
        at akshay.com.myfirstapp.Addition$1.onClick(Addition.java:28) 
        at android.view.View.performClick(View.java:5198) 
        at android.view.View$PerformClick.run(View.java:21147) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Application terminated. 

Вот мой Addition.java

package akshay.com.myfirstapp; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class Addition extends AppCompatActivity { 

EditText editText2,editText3; 
Button button; 
TextView textView3; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_addition); 

    editText2=(EditText)findViewById(R.id.editText2); 
    editText3=(EditText)findViewById(R.id.editText3); 
    button=(Button)findViewById(R.id.button); 
    textView3=(TextView)findViewById(R.id.textView3); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int i=Integer.parseInt(editText2.getText().toString()); 
      int j=Integer.parseInt(editText3.getText().toString()); 
      int ans=i+j; 
      textView3.setText(ans); 
     } 
    }); 
} 

}

Вот мой addition_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_addition" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="akshay.com.myfirstapp.Addition"> 

<EditText 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:id="@+id/editText2" 
    android:layout_alignParentTop="true" 
    android:layout_alignLeft="@+id/editText3" 
    android:layout_alignStart="@+id/editText3" /> 

<TextView 
    android:text="First Number" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="36dp" 
    android:layout_marginStart="36dp" 
    android:id="@+id/textView" 
    android:textSize="20sp" 
    android:layout_alignBottom="@+id/editText2" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<TextView 
    android:text="Second Number" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="33dp" 
    android:id="@+id/textView2" 
    android:textSize="20sp" 
    android:layout_below="@+id/textView" 
    android:layout_alignLeft="@+id/textView" 
    android:layout_alignStart="@+id/textView" /> 

<EditText 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:id="@+id/editText3" 
    android:layout_alignBaseline="@+id/textView2" 
    android:layout_alignBottom="@+id/textView2" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 

<Button 
    android:text="Add" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/button" 
    android:layout_below="@+id/editText3" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="71dp" /> 

<TextView 
    android:text="Sum" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView3" 
    android:textSize="25sp" 
    android:layout_width="100dp" 
    android:layout_below="@+id/button" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="64dp" /> 

+0

Вы преобразовываете пустую строку в целое число –

ответ

3

Пустую строку нельзя преобразовать в Integer, поэтому вам нужно проверить, что ваши EditTexts сначала не пустые.

И как указано @csabapap, метод setText на вашем TextView должен быть передан String.

Окончательный код может выглядеть примерно так:

if (editText2.getText().length() != 0 && editText3.getText().length() != 0) { 
    int i=Integer.parseInt(editText2.getText().toString()); 
    int j=Integer.parseInt(editText3.getText().toString()); 
    int ans=i+j; 
    textView3.setText(String.valueOf(ans)); 
} 

Вы также можете дать вашим EditText переменным осмысленные имена. Очень сложно сказать, кто из них, и это поможет сэкономить вам время отладки.

+1

Если вы передадите int в setText(), если будете искать идентификатор ресурса. Вы должны использовать textView3.setText (String.valueOf (ans)) – csabapap

+0

Да, вы правы. Добавлю это, спасибо –