简体   繁体   中英

Android Studio Counter TextView Field not updating

Assuming Imports and Stuff

Im trying to build a simple Calorie Counter, but having a trouble displaying the number of calories. I also want it to add to the previous input.. for instance if the user enters 500, 400, 300 the total in the TextField should be 1200.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/CalorieAdd"
    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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="rav_singh.caloriecounter.MainActivity"
    tools:showIn="@layout/activity_main">


    <TextView
        android:text="Current Calories "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/caloriesNeeded"
        android:textSize="30dp"
        android:layout_marginTop="41dp"
        android:layout_marginEnd="69dp"
        android:layout_below="@+id/calCount"
        android:layout_alignParentEnd="true" />

    <TextView
        android:text="0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/calCount"
        android:textAlignment="center"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textSize="40dp" />

    <Button
        android:text="Add "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/calorieAdd"
        android:layout_marginTop="88dp"
        android:layout_below="@+id/caloriesNeeded"
        android:layout_centerHorizontal="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:id="@+id/calorieinput"
        android:hint="Add Calories "
        android:layout_marginTop="12dp"
        android:layout_below="@+id/caloriesNeeded"
        android:layout_alignStart="@+id/caloriesNeeded"
        android:textAlignment="center" />


</RelativeLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity
{

     EditText input;
     TextView calTotal;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

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

        calTotal = (TextView) findViewById(R.id.calCount);
        input = (EditText) findViewById(R.id.calorieinput);

        Button calorieAdd = (Button) findViewById(R.id.calorieAdd);
        calTotal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Float n1 = Float.valueOf(input.getText().toString());
                calTotal.setText(Float.toString(n1));
            }
        });
    }

}

previous input.. for instance if the user enters 500, 400, 300 the total in the TextField should be 1200

Add both TextView and EditText data before updating counter in TextView like:

       @Override
        public void onClick(View view) { 
            float n0 = Float.parseFloat(calTotal.getText().toString());
            float n1 = Float.parseFloat(input.getText().toString());
            calTotal.setText(Float.toString(n0+n1));
        }

Also added empty check for EditText before parsing value to Float to avoid NumberFormatException Exception.

try

if(input.getText().toString().trim().length() > 0)
     float n1 = Float.parseFloat(input.getText().toString());

instead of:

Float n1 = Float.valueOf(input.getText().toString());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM