Application stops working in Android Emulator

361 Views Asked by At

I'm making an app in which user enters two numbers in two text fields and then press the "Add" button and the app generates a toast which shows the sum of the two numbers. The app runs, but when i press the "Add" button, it says "Unfortunately, ToastSum has stopped working". What did i do wrong?

Here is the xml file: (activity_main.xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<EditText
    android:id="@+id/n1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="56dp"
    android:hint="number 1"
    android:ems="10" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/n2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/n1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="50dp"
    android:hint="number 2"
    android:ems="10" />

<Button
    android:id="@+id/b1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/n2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="48dp"
    android:text="Add" />

</RelativeLayout>

Here is the Java code: (MainActivity.java)

package com.example.toastsum;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

@SuppressWarnings("deprecation")
public class MainActivity extends ActionBarActivity {
    Button add;
    EditText t1,t2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    add=(Button) findViewById(R.id.b1);
    t1=(EditText) findViewById(R.id.n1);
    t2=(EditText) findViewById(R.id.n2);
    add.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            while(t1.toString().equals(null) || t2.toString().equals(null))
            {
                Toast.makeText(MainActivity.this, "Enter two numbers", Toast.LENGTH_SHORT).show();
            }   
            double d1,d2;
            d1=Double.parseDouble(t1.toString());
            d2=Double.parseDouble(t2.toString());
            d1+=d2;
            String s=String.valueOf(d1);
            Toast.makeText(MainActivity.this,s, Toast.LENGTH_LONG).show();
        }
    });

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

Here is AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.toastsum"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="22" />


<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

And here is Logcat:

06-22 12:11:11.789: E/AndroidRuntime(1225): FATAL EXCEPTION: main
06-22 12:11:11.789: E/AndroidRuntime(1225): Process: com.example.toastsum, PID: 1225
06-22 12:11:11.789: E/AndroidRuntime(1225): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.toastsum/com.example.toastsum.MainActivity}: java.lang.NumberFormatException: Invalid double:  "android.support.v7.widget.AppCompatEditText{10b5c225 VFED..CL .F....I.  0,0-0,0 #7f09004f app:id/n1}"
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.app.ActivityThread.access$800(ActivityThread.java:151)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.os.Handler.dispatchMessage(Handler.java:102)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.os.Looper.loop(Looper.java:135)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.app.ActivityThread.main(ActivityThread.java:5257)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at java.lang.reflect.Method.invoke(Native Method)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at java.lang.reflect.Method.invoke(Method.java:372)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
06-22 12:11:11.789: E/AndroidRuntime(1225): Caused by: java.lang.NumberFormatException: Invalid double: "android.support.v7.widget.AppCompatEditText{10b5c225 VFED..CL .F....I. 0,0-0,0 #7f09004f app:id/n1}"
06-22 12:11:11.789: E/AndroidRuntime(1225):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at java.lang.StringToReal.initialParse(StringToReal.java:114)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at java.lang.StringToReal.parseDouble(StringToReal.java:282)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at java.lang.Double.parseDouble(Double.java:301)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at com.example.toastsum.MainActivity.onCreate(MainActivity.java:27)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.app.Activity.performCreate(Activity.java:5990)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
06-22 12:11:11.789: E/AndroidRuntime(1225):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
06-22 12:11:11.789: E/AndroidRuntime(1225):     ... 10 more
06-22 12:13:45.489: E/AndroidRuntime(1278): FATAL EXCEPTION: main
06-22 12:13:45.489: E/AndroidRuntime(1278): Process: com.example.toastsum, PID: 1278
06-22 12:13:45.489: E/AndroidRuntime(1278): java.lang.NumberFormatException: Invalid double: "android.support.v7.widget.AppCompatEditText{3850235a VFED..CL ........ 80,84-400,152 #7f09004f app:id/n1}"
06-22 12:13:45.489: E/AndroidRuntime(1278):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at java.lang.StringToReal.initialParse(StringToReal.java:114)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at java.lang.StringToReal.parseDouble(StringToReal.java:282)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at java.lang.Double.parseDouble(Double.java:301)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at com.example.toastsum.MainActivity$1.onClick(MainActivity.java:34)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at android.view.View.performClick(View.java:4780)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at android.view.View$PerformClick.run(View.java:19866)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at android.os.Handler.handleCallback(Handler.java:739)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at android.os.Looper.loop(Looper.java:135)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at android.app.ActivityThread.main(ActivityThread.java:5257)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at java.lang.reflect.Method.invoke(Native Method)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at java.lang.reflect.Method.invoke(Method.java:372)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-22 12:13:45.489: E/AndroidRuntime(1278):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
06-22 12:16:15.820: E/AndroidRuntime(1314): FATAL EXCEPTION: main
06-22 12:16:15.820: E/AndroidRuntime(1314): Process: com.example.toastsum, PID: 1314
06-22 12:16:15.820: E/AndroidRuntime(1314): java.lang.NumberFormatException: Invalid double: "android.support.v7.widget.AppCompatEditText{6ee1150 VFED..CL .F...... 80,84-400,152 #7f09004f app:id/n1}"
06-22 12:16:15.820: E/AndroidRuntime(1314):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at java.lang.StringToReal.initialParse(StringToReal.java:114)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at java.lang.StringToReal.parseDouble(StringToReal.java:282)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at java.lang.Double.parseDouble(Double.java:301)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at com.example.toastsum.MainActivity$1.onClick(MainActivity.java:34)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at android.view.View.performClick(View.java:4780)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at android.view.View$PerformClick.run(View.java:19866)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at android.os.Handler.handleCallback(Handler.java:739)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at android.os.Looper.loop(Looper.java:135)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at android.app.ActivityThread.main(ActivityThread.java:5257)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at java.lang.reflect.Method.invoke(Native Method)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at java.lang.reflect.Method.invoke(Method.java:372)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-22 12:16:15.820: E/AndroidRuntime(1314):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
06-22 12:18:47.286: E/AndroidRuntime(1338): FATAL EXCEPTION: main
06-22 12:18:47.286: E/AndroidRuntime(1338): Process: com.example.toastsum, PID: 1338
06-22 12:18:47.286: E/AndroidRuntime(1338): java.lang.NumberFormatException: Invalid double: "android.support.v7.widget.AppCompatEditText{9d1d602 VFED..CL .F...... 80,84-400,152 #7f09004f app:id/n1}"
06-22 12:18:47.286: E/AndroidRuntime(1338):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at java.lang.StringToReal.initialParse(StringToReal.java:114)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at java.lang.StringToReal.parseDouble(StringToReal.java:282)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at java.lang.Double.parseDouble(Double.java:301)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at com.example.toastsum.MainActivity$1.onClick(MainActivity.java:34)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at android.view.View.performClick(View.java:4780)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at android.view.View$PerformClick.run(View.java:19866)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at android.os.Handler.handleCallback(Handler.java:739)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at android.os.Looper.loop(Looper.java:135)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at android.app.ActivityThread.main(ActivityThread.java:5257)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at java.lang.reflect.Method.invoke(Native Method)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at java.lang.reflect.Method.invoke(Method.java:372)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-22 12:18:47.286: E/AndroidRuntime(1338):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
06-22 12:24:46.435: E/AndroidRuntime(1392): FATAL EXCEPTION: main
06-22 12:24:46.435: E/AndroidRuntime(1392): Process: com.example.toastsum, PID: 1392
06-22 12:24:46.435: E/AndroidRuntime(1392): java.lang.NumberFormatException: Invalid double: "android.support.v7.widget.AppCompatEditText{9d1d602 VFED..CL .F....ID 80,84-400,152 #7f09004f app:id/n1}"
06-22 12:24:46.435: E/AndroidRuntime(1392):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at java.lang.StringToReal.initialParse(StringToReal.java:114)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at java.lang.StringToReal.parseDouble(StringToReal.java:282)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at java.lang.Double.parseDouble(Double.java:301)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at com.example.toastsum.MainActivity$1.onClick(MainActivity.java:34)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at android.view.View.performClick(View.java:4780)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at android.view.View$PerformClick.run(View.java:19866)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at android.os.Handler.handleCallback(Handler.java:739)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at android.os.Looper.loop(Looper.java:135)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at android.app.ActivityThread.main(ActivityThread.java:5257)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at java.lang.reflect.Method.invoke(Native Method)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at java.lang.reflect.Method.invoke(Method.java:372)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-22 12:24:46.435: E/AndroidRuntime(1392):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
06-22 12:25:10.723: E/AndroidRuntime(1415): FATAL EXCEPTION: main
06-22 12:25:10.723: E/AndroidRuntime(1415): Process: com.example.toastsum, PID: 1415
06-22 12:25:10.723: E/AndroidRuntime(1415): java.lang.NumberFormatException: Invalid double: "android.support.v7.widget.AppCompatEditText{3850235a VFED..CL ........ 80,84-400,152 #7f09004f app:id/n1}"
06-22 12:25:10.723: E/AndroidRuntime(1415):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at java.lang.StringToReal.initialParse(StringToReal.java:114)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at java.lang.StringToReal.parseDouble(StringToReal.java:282)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at java.lang.Double.parseDouble(Double.java:301)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at com.example.toastsum.MainActivity$1.onClick(MainActivity.java:34)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at android.view.View.performClick(View.java:4780)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at android.view.View$PerformClick.run(View.java:19866)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at android.os.Handler.handleCallback(Handler.java:739)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at android.os.Looper.loop(Looper.java:135)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at android.app.ActivityThread.main(ActivityThread.java:5257)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at java.lang.reflect.Method.invoke(Native Method)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at java.lang.reflect.Method.invoke(Method.java:372)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-22 12:25:10.723: E/AndroidRuntime(1415):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
06-22 12:28:58.352: E/AndroidRuntime(1440): FATAL EXCEPTION: main
06-22 12:28:58.352: E/AndroidRuntime(1440): Process: com.example.toastsum, PID: 1440
06-22 12:28:58.352: E/AndroidRuntime(1440): java.lang.NumberFormatException: Invalid double: "android.support.v7.widget.AppCompatEditText{9d1d602 VFED..CL .F...... 80,84-400,152 #7f09004f app:id/n1}"
06-22 12:28:58.352: E/AndroidRuntime(1440):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at java.lang.StringToReal.initialParse(StringToReal.java:114)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at java.lang.StringToReal.parseDouble(StringToReal.java:282)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at java.lang.Double.parseDouble(Double.java:301)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at com.example.toastsum.MainActivity$1.onClick(MainActivity.java:34)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at android.view.View.performClick(View.java:4780)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at android.view.View$PerformClick.run(View.java:19866)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at android.os.Handler.handleCallback(Handler.java:739)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at android.os.Looper.loop(Looper.java:135)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at android.app.ActivityThread.main(ActivityThread.java:5257)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at java.lang.reflect.Method.invoke(Native Method)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at java.lang.reflect.Method.invoke(Method.java:372)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-22 12:28:58.352: E/AndroidRuntime(1440):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
3

There are 3 best solutions below

0
On

One of your EditTexts don't contain a valid double value, which causing one from

d1=Double.parseDouble(t1.toString());
d2=Double.parseDouble(t2.toString()); 

to fail.

This check

while(t1.toString().equals(null) || t2.toString().equals(null)) {
   Toast.makeText(MainActivity.this, "Enter two numbers", Toast.LENGTH_SHORT).show();
 }  

is wrong. It should be

  if (TextUtils.isEmpty(t1.getText().toString()) || TextUtils.isEmpty(t2.getText().toString()) {
      Toast.makeText(MainActivity.this, "Enter two numbers", Toast.LENGTH_SHORT).show();
      return;
  }
0
On

This is wrong. You're trying to convert an EditText to a string and parse it to a double.

d1=Double.parseDouble(t1.toString());
d2=Double.parseDouble(t2.toString());

You probably want

d1 = Double.parseDouble(t1.getText().toString());

Oh and your while loop looks weird. You probably want an if check, and do return if the text is invalid

0
On

Please replace t1.toString() with t1.getText.toString();