edittext字段允许用户通过按钮更改字段或编辑并将结果分配给变量

20jt8wwn  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(339)

我是一个学习android编程的新手,这有助于提高工作效率。我有一个非常简单的问题,我认为应该有一个简单的答案,我只是找不到任何在我的eddittext,listener和edittext变量搜索工作。
基本上,我有一个edittext字段,应该通过按+或-按钮或用户输入来更新。我需要将edittext字段放入变量中,以便在计算中使用它。我希望计算发生在我点击+或-按钮之后,在用户输入文本之后(如果更容易的话,可能是在期间)。
当我按下+或-按钮时,生成的编辑文本基于我的int变量fuel,但完全忽略了用户输入(因为我无法获得用户输入来更新fuel变量)。
我需要的是。1) 要根据用户输入更新的燃油变量,以便在按下后续的+或-按钮时,燃油变量相对于用户输入进行调整。i、 e.将用户输入发送到燃料变量。
fuel是一个全局int变量。fuelcalc是一种基于fuel变量进行计算的方法。
以下是我的代码摘录:
xml:

<EditText
                android:id="@+id/Fuel_load_field"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:hint="Fuel Load"
                android:inputType="number"
                android:imeOptions="actionDone"
                android:maxLength="5"
                android:textSize="16sp"/>

            <Button
                android:layout_width="64dp"
                android:layout_height="match_parent"
                android:text="+"
                android:textAllCaps="true"
                android:onClick="addOneHundredtoFuel"
                android:textSize="16sp" />

            <Button
                android:layout_width="64dp"
                android:layout_height="match_parent"
                android:text="-"
                android:textAllCaps="true"
                android:onClick="subtractOneHundredtoFuel"
                android:textSize="16sp" />

以下是java:

public void addOneHundredtoFuel(View view) {

        fuel = fuel + 100;

        TextView fuelField = (TextView) findViewById(R.id.Fuel_load_field);
        fuelField.setText(String.valueOf(fuel));
        fuelCal(fuel);
    }

    public void subtractOneHundredtoFuel(View view) {

        fuel = fuel - 100;

        TextView fuelField = (TextView) findViewById(R.id.Fuel_load_field);
        fuelField.setText(String.valueOf(fuel));

        fuelCal(fuel);
    }

    public void fieldEntryFuel(View view) {

        EditText inputText = (EditText) findViewById(R.id.Fuel_load_field);
        String fuelString = inputText.getText().toString();

        fuel = Integer.parseInt(fuelString);

        TextView fuelField = (TextView) findViewById(R.id.Fuel_load_field);
        fuelField.setText(String.valueOf(fuel));

        fuelCal(fuel);

    }

谢谢你的帮助。
空运

eivnm1vs

eivnm1vs1#

我不是100%确定我理解你的问题。。。当用户在edittext中输入文本时,您想更新一个变量,对吗?如果是这样的话,你可能想退出 TextWatcher ; 如果我理解正确的话,它正是你想要做的。
例子:

private final TextWatcher fuelWatcher = new TextWatcher(){
    EditText fuelLoadField = (EditText)findViewById(R.id.Fuel_load_field);

    @Override
    afterTextChanged(Editable s){
        fuel =  = Integer.parseInt(fuelLoadField.getText());
    }
}

确保将该侦听器注册到 onCreate() 通过呼叫 fuelField.addTextChangedListener(fuelWatcher);

lnxxn5zx

lnxxn5zx2#

如果您想在用户按下任何按钮时从“编辑文本”字段中获取值,只需对edittext调用gettext(),并将其存储为int,以便在将来的计算中使用 int userInput = Integer.parseInt(myEditText.getText);

相关问题