【问题标题】:History for simple calculator - Android简单计算器的历史 - Android
【发布时间】:2016-11-12 20:52:09
【问题描述】:

我是 android 新手,我创建了一个简单的计算器。现在我希望它向我展示 textView 中的操作历史。我不知道该怎么做,有人可以帮我吗?我知道这是非常简单的编程,但我刚开始学习 java 并且我在 android studio 工作。谢谢。 编辑:我发现 1 个错误,所以我编辑了 main 并添加了布局代码。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class MainActivity extends AppCompatActivity {

    Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, bplus, bminus, bmulti, bdiv, beq, bc;

    EditText edit1;
    TextView hist;

    int nr1, nr2;

    boolean plus, minus, multi, div;
    //List<String> history= new ArrayList<>();



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        b0 = (Button) findViewById(R.id.b0);
        b1 = (Button) findViewById(R.id.b1);
        b2 = (Button) findViewById(R.id.b2);
        b3 = (Button) findViewById(R.id.b3);
        b4 = (Button) findViewById(R.id.b4);
        b5 = (Button) findViewById(R.id.b5);
        b6 = (Button) findViewById(R.id.b6);
        b7 = (Button) findViewById(R.id.b7);
        b8 = (Button) findViewById(R.id.b8);
        b9 = (Button) findViewById(R.id.b9);

        bplus = (Button) findViewById(R.id.bplus);
        bminus = (Button) findViewById(R.id.bminus);
        bmulti = (Button) findViewById(R.id.bmulti);
        bdiv = (Button) findViewById(R.id.bdiv);
        bc = (Button) findViewById(R.id.bc);
        beq = (Button) findViewById(R.id.beq);

        edit1 = (EditText) findViewById(R.id.edit1);
        hist = (TextView) findViewById(R.id.hist);
        //history.get(index);



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


        });

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

        });

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

        });

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

        });

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

        });

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

        });

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

        });

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

        });

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

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

        });

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

        });

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

                if (edit1 == null){
                    edit1.setText("");
                }else {
                    nr1 = Integer.parseInt(edit1.getText() + "");
                    plus= true;
                    edit1.setText(null);
                }
            }
        });

        bminus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                nr1 = Integer.parseInt(edit1.getText() + "");
                minus = true ;
                edit1.setText(null);
            }
        });

        bmulti.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                nr1 = Integer.parseInt(edit1.getText() + "");
                multi = true ;
                edit1.setText(null);
            }
        });

        bdiv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                nr1 = Integer.parseInt(edit1.getText()+"");
                div = true ;
                edit1.setText(null);
            }
        });

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


        beq.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                nr2 = Integer.parseInt(edit1.getText() + "");

                double res = '0';

                if (plus == true){
                    edit1.setText(nr1 + nr2+"");
                    plus=false;
                }


                if (minus == true){
                    edit1.setText(nr1 - nr2+"");
                    minus=false;
                }

                if (multi == true){
                    edit1.setText(nr1 * nr2+"");
                    multi=false;
                }

                if (div == true){
                    edit1.setText(nr1 / nr2+"");
                    div=false;
                }


            }


        });

}

}

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


    <TextView
        android:layout_width="match_parent"
        android:id="@+id/hist"
        android:layout_height="100dp" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/edit1" />

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.10"
        android:id="@+id/GridLayout">

        <Button
            android:text="5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b5"
            android:layout_row="1"
            android:layout_column="1"/>

        <Button
            android:text="6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b6"
            android:layout_row="1"
            android:layout_column="2"/>

        <Button
            android:text="-"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bminus" />

        <Button
            android:text="7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b7"
            android:layout_row="2"
            android:layout_column="0"/>

        <Button
            android:text="8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b8"
            android:layout_row="2"
            android:layout_column="1" />

        <Button
            android:text="9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b9"
            android:layout_row="2"
            android:layout_column="2" />

        <Button
            android:text="*"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bmulti"
            android:layout_row="2"
            android:layout_column="3" />

        <Button
            android:text="+"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bplus"
            android:layout_row="0"
            android:layout_column="3" />

        <Button
            android:text="3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b3"
            android:layout_row="0"
            android:layout_column="2" />

        <Button
            android:text="4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b4"
            android:layout_row="1"
            android:layout_column="0" />

        <Button
            android:text="0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b0"
            android:layout_row="3"
            android:layout_column="1" />

        <Button
            android:text="2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b2"
            android:layout_row="0"
            android:layout_column="1" />

        <Button
            android:text="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/b1"
            android:layout_row="0"
            android:layout_column="0" />

        <Button
            android:text="/"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bdiv"
            android:layout_row="3"
            android:layout_column="3" />

        <Button
            android:text="="
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/beq"
            android:layout_row="3"
            android:layout_column="2" />

        <Button
            android:text="C"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bc"
            android:layout_row="3"
            android:layout_column="0" />

    </GridLayout>

</LinearLayout>

【问题讨论】:

    标签: android calculator


    【解决方案1】:

    您应该首先创建一个模型来存储操作的基本信息,然后您可以通过适配器将它们添加到列表视图中。

    【讨论】:

      【解决方案2】:

      你可以将它存储在一个数组列表中,随时一一调用。

      List<String> history= new ArrayList<>();
      

      在单击相等按钮时将结果添加到历史记录:

          beq.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  nr2 = Integer.parseInt(edit1.getText() + "");
      
                  double res;
      
                  if (plus == true){
                      res = nr1 + nr2;
                      edit1.setText(nr1 + nr2+"");
                      plus=false;
                  }
      
      
                 if (minus == true){
                      res = nr1 - nr2;
                      edit1.setText(nr1 - nr2+"");
                      minus=false;
                  }
      
                  if (multi == true){
                      res = nr1 * nr2;
                      edit1.setText(nr1 * nr2+"");
                      multi=false;
                  }
      
                  if (div == true){
                      res = nr1 / nr2;
                      edit1.setText(nr1 / nr2+"");
                      div=false;
                  }
      
                 history.add(String.valueOf(res);
      
              }
      
      
      
          });
      

      代码中某处的通话记录:

      history.get(index); //index is integer from 0 to array size
      

      【讨论】:

      • 我无法将 res 放入方法中,它必须是字符串。错误:(231, 24) 错误:没有找到适合 add(double) 方法的方法 Collection.add(String) 不适用(参数不匹配;double 无法转换为 String)方法 List.add(String) 不适用(参数不匹配;双精度不能转换为字符串)我如何在我的 textView 中显示这个?文本视图历史;
      • 使用history.add(String.valueOf(res);
      猜你喜欢
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多