简体   繁体   English

Android Studio Counter TextView字段未更新

[英]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. 我还希望它添加到以前的输入中。例如,如果用户输入500、400、300,则TextField中的总数应为1200。

activity_main.xml 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 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 以前的输入。例如,如果用户输入500、400、300,则TextField中的总数应为1200

Add both TextView and EditText data before updating counter in TextView like: 在更新TextView中的计数器之前,先添加TextView和EditText数据,例如:

       @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. 在将值解析为Float之前还添加了对EditText的空检查,以避免NumberFormatException异常。

try 尝试

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

instead of: 代替:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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