Android 文本在下次输入后从文本视图中消失

Android Text vanishes from text view after next input

我是 android 工作室的新手,我正在构建一个计算器应用程序,我的问题是每当我输入一个数字然后 select 一个运算符时,文本视图中的数字就会消失,就像我想要 2+4,然后按 2,然后 +2 从文本视图中消失,然后当我按 4+ 消失从文本视图,但结果是正确的

这是我的 java 代码...

    buttonAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (edt1 == null){
                edt1.setText("");
            }else {
                mValueOne = Float.parseFloat(edt1.getText() + "");
                mAddition = true;
                edt1.setText(null);
            }
        }
    });

    buttonSub.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mValueOne = Float.parseFloat(edt1.getText() + "");
            mSubtract = true ;
            edt1.setText(null);
        }
    });

    buttonMul.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mValueOne = Float.parseFloat(edt1.getText() + "");
            mMultiplication = true ;
            edt1.setText(null);
        }
    });

    buttonDivision.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mValueOne = Float.parseFloat(edt1.getText()+"");
            mDivision = true ;
            edt1.setText(null);
        }
    });

    buttonEqual.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mValueTwo = Float.parseFloat(edt1.getText() + "");

            if (mAddition == true){

                edt1.setText(mValueOne + mValueTwo +"");
                mAddition=false;
            }


            if (mSubtract == true){
                edt1.setText(mValueOne - mValueTwo+"");
                mSubtract=false;
            }

            if (mMultiplication == true){
                edt1.setText(mValueOne * mValueTwo+"");
                mMultiplication=false;
            }

            if (mDivision == true){
                edt1.setText(mValueOne / mValueTwo+"");
                mDivision=false;
            }
        }
    });

    buttonC.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            edt1.setText("");
        }
    });

    button10.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            edt1.setText(edt1.getText()+".");
        }
    });
}

您正在正确收集数据,但您一直将 edt1 设置为 null,然后当您点击 + 时,edt1 将始终为 null

 if (edt1 == null){
            edt1.setText("");
        }

请问您为什么要使用相同的 editText 字段来执行此操作?

我建议使用 2 个编辑文本字段。

第一个数字为 1 第二个数字 1

然后在文本视图中显示结果?

您可以使用下面的代码实现类似的功能

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <EditText
        android:id="@+id/first_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2"
        android:layout_weight="0.40"/>

    <EditText
        android:id="@+id/second_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2"
        android:layout_weight="0.40"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" = "
        android:layout_weight="0.10"/>

    <TextView
        android:id="@+id/result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="4"
        android:layout_weight="0.20"/>

</LinearLayout>

然后你可以从first_number和second_number收集数据并在结果中显示结果。

使用 append 方法在已有文本后添加文本

edt1.append(someString);

每次单击按钮时,您都将“编辑文本”设置为空。这将清除其中的所有文本。如果你想添加文本,请使用附加方法。