有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android Studio计数器文本视图字段未更新

假设进口和其他东西

我试图建立一个简单的热量计数器,但有一个问题显示 卡路里的数量。我还希望将其添加到以前的输入中。。 例如,如果用户在文本字段中输入500、400、300总数 应该是1200

主要活动。xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    xmlns:app="http://schemas.安卓.com/apk/res-auto"
    xmlns:tools="http://schemas.安卓.com/tools"
    安卓:id="@+id/CalorieAdd"
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    安卓:paddingBottom="@dimen/activity_vertical_margin"
    安卓:paddingLeft="@dimen/activity_horizontal_margin"
    安卓:paddingRight="@dimen/activity_horizontal_margin"
    安卓: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
        安卓:text="Current Calories "
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        安卓:id="@+id/caloriesNeeded"
        安卓:textSize="30dp"
        安卓:layout_marginTop="41dp"
        安卓:layout_marginEnd="69dp"
        安卓:layout_below="@+id/calCount"
        安卓:layout_alignParentEnd="true" />

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

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

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


</RelativeLayout>

主要活动。爪哇

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));
            }
        });
    }

}

共 (2) 个答案

  1. # 1 楼答案

    试一试

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

    而不是:

    Float n1 = Float.valueOf(input.getText().toString());
    
  2. # 2 楼答案

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

    在更新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));
            }
    

    还为EditText添加了空检查,然后将值解析为Float,以避免NumberFormatException异常