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

时间:2016-03-27 23:50:06

标签: java android android-studio android-edittext

我是一个学习android编程的新手,有助于提高工作效率。 我有一个非常简单的问题,我认为应该有一个简单的答案,我在找到eddittext,listener和edittext变量时找不到任何有用的东西。

基本上我有一个Edittext字段,应该通过按+或 - 按钮或用户输入来更新。我需要将edittext字段放入变量中,以便我可以在计算中使用它。我希望计算在我点击+或 - 按钮之后以及之后(可能在更容易的时候)用户输入文本时发生。

当我按下+或 - 按钮时,生成的编辑文本基于我的int变量燃料,但完全忽略了用户输入(因为我无法获得该用户输入来更新我的燃料变量)。

我需要的是什么。 1)基于用户输入更新的燃料变量,以便当按下后续的+或 - 按钮时,相对于用户输入调整燃料变量。即将用户输入发送到燃料变量。

燃料是一个全局的int变量。 fuelCalc是一种方法,我计划根据燃料变量进行一些计算。

以下是我的代码的摘录:

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

    }

感谢您的帮助。

Airfix膨胀

2 个答案:

答案 0 :(得分:0)

我并非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);注册您的EditText对象。

答案 1 :(得分:0)

如果您想在用户按任意按钮时从编辑文本字段中获取值,您只需在EditText上调用getText()并将其存储为int以用于将来的计算openssl s_client -host example.com -port 8443