Sean
Sean

Reputation: 25

java - Android app crashes when button is pressed

I am trying to get a part of a simple Android app working. I am confused as to why I am getting the error "Unfortunately, this app has stopped working".

Basically, I need the total value to increase when I click on a button based on what value they have. For example coffee adds 2 to the total. Every time I click a button that adds to the total value, the app crashes.

Here is the source code. I have just copied the parts that are specific to this problem.

package com.example.pp.application;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity implements AdapterView.OnItemSelectedListener {

    TextView tv01;
    Double Total = 0.00;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv01 = (TextView) findViewById(R.id.tv01);

    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public void sendMessage(View view)
    {
        Intent intent = new Intent(MainActivity.this, MainActivity2.class);
        startActivity(intent);
    }



    public void addCoffee() {

        Total = Total + 2.20;
        tv01.setText(""+Total+"");
    }

    public void addBus() {

        Total = Total + 1.90;
        tv01.setText(""+Total+"");
    }

    public void addMilk() {

        Total = Total + 1.50;
        tv01.setText(""+Total+"");

    }


}

And here is the Manifest:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:id="@+id/label">

<Button
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="Coffee"
    android:id="@+id/button"
    android:onClick="addCoffee"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_marginTop="42dp" />

<Button
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="Bus"
    android:onClick="addBus"
    android:id="@+id/button3"
    android:layout_below="@+id/button2"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<Button
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="Milk"
    android:onClick="addMilk"
    android:id="@+id/button4"
    android:layout_below="@+id/button3"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Next"
    android:onClick="sendMessage"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/button5" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="------------------"
    android:id="@+id/tv01"
    android:layout_alignRight="@+id/button"
    android:layout_alignEnd="@+id/button" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Total"
    android:id="@+id/textView"
    android:layout_toStartOf="@+id/tv01"
    android:layout_toLeftOf="@+id/tv01" />

Upvotes: 2

Views: 200

Answers (3)

predactor
predactor

Reputation: 1112

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tv01 = (TextView) findViewById(R.id.tv01);
    public void addCoffee(View v) {

    Total = Total + 2.20;
    tv01.setText(""+Total+"");
   }
   }

and continue with another function with same way

Upvotes: 1

Eugen Pechanec
Eugen Pechanec

Reputation: 38243

Instead of public void addCoffee() your onClick method definition should look like public void addCoffee(View v), where v is the widget you clicked on (in this case the Button). Take the same approach when updating other onClick methods. This requirement applies only to callbacks defined via android:onClick attribute in XML layout.

Upvotes: 2

hsirkar
hsirkar

Reputation: 789

Since you haven't posted the stack trace of the LogCat, I have no way of telling when in the code your error has been.

But it's likely to have occured before. These links contain similar stances and documentations about exceptions.

My Android App Keeps Crashing

https://developers.google.com/analytics/devguides/collection/android/v4/exceptions

https://developer.android.com/distribute/essentials/optimizing-your-app.html

Android App Crashes on Button Click

Upvotes: 0

Related Questions