这个过程已经停止。 Android计算器组合

时间:2011-04-10 15:10:18

标签: android calculator

在指向正确的方向以了解视图和布局后,我能够制作出一个我觉得非常好的计算器。我添加了一些非常基本的代码,它远非优雅,但我希望通过制作一个简单的应用程序来获得我的壮举。到目前为止,它只说过程已停止并再次尝试。我100%肯定这是我的代码而不是我的ui让这件事发生。我之前用1个按钮制作了一个基本的按钮计数器,但是现在有15个按钮,我想我搞砸了。

以下是名为hellocats的计算器代码(我正在学习基础教程并继续添加)

package com.hellocats;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class hellokatz extends Activity {
    /** Called when the activity is first created. */



int numbermover = 0;
int[] numbers ={0,0};

String sign = "+";
int answer;




@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

   final Button button0 = (Button)findViewById(R.id.button0);
   final Button button1 = (Button)findViewById(R.id.button1);
   final Button button2 = (Button)findViewById(R.id.button2);
   final Button button3 = (Button)findViewById(R.id.button3);
   final Button button4 = (Button)findViewById(R.id.button4);
   final Button button5 = (Button)findViewById(R.id.button5);
   final Button button6 = (Button)findViewById(R.id.button6);
   final Button button7 = (Button)findViewById(R.id.button7);
   final Button button8 = (Button)findViewById(R.id.button8);
   final Button button9 = (Button)findViewById(R.id.button9);

   final Button addbutton = (Button)findViewById(R.id.buttonadd);
   final Button subbutton = (Button)findViewById(R.id.buttonsub);
   final Button mulbutton = (Button)findViewById(R.id.buttonmul);
   final Button divbutton = (Button)findViewById(R.id.buttondiv);
   final Button equalsbutton = (Button)findViewById(R.id.buttonequals);

   final  EditText num1 = (EditText)findViewById(R.id.num1);
   final EditText mysign = (EditText)findViewById(R.id.sign);
   final  EditText num2 = (EditText)findViewById(R.id.num2);
   final  EditText answer = (EditText)findViewById(R.id.answer);


    num1.setText(numbers[0]);
    num2.setText(numbers[1]);
    mysign.setText(sign);


    button0.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 0;

        }
    });
       button1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 1;

        }
    });
       button2.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 2;

        }
    });
       button3.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 3;

        }
    });
       button4.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 4;

        }
    });
       button5.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 5;

        }
    });
       button6.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 6;

        }
    });
       button7.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 7;

        }
    });
       button8.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 8;

        }
    });
       button9.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            numbers[numbermover] = 9;

        }
       });


}
}

这是布局文件main.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:orientation="vertical">
    <TableRow android:id="@+id/tableRow1" android:layout_height="wrap_content" android:layout_width="match_parent">
        <Button android:text="  1   " android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  2   " android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  3   " android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  4   " android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  5   " android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  6   " android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  7   " android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </TableRow>
    <TableRow android:id="@+id/tableRow2" android:layout_height="wrap_content" android:layout_width="match_parent">
        <Button android:text="  8   " android:id="@+id/button8" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  9   " android:id="@+id/button9" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  0   " android:id="@+id/button0" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </TableRow>
    <TableRow android:id="@+id/tableRow3" android:layout_height="wrap_content" android:layout_width="match_parent">
        <Button android:text="  +   " android:id="@+id/buttonadd" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  -   " android:id="@+id/buttonsub" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  X   " android:id="@+id/buttonmul" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  /   " android:id="@+id/buttondiv" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="  =   " android:id="@+id/buttonequals" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </TableRow>
    <TableRow android:id="@+id/tableRow4" android:layout_height="wrap_content" android:layout_width="match_parent">
        <EditText android:text="      " android:id="@+id/num1" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
        <EditText android:text="      " android:id="@+id/sign" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
        <EditText android:text="      " android:id="@+id/num2" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
        <EditText android:text="  =   " android:id="@+id/equals" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
        <EditText android:text="      " android:id="@+id/answer" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
    </TableRow>
</LinearLayout>  

我在java文件中做错了什么,如何修复并从中学习?

谢谢:Aslo我对你的网站很新,到目前为止还无法弄清楚如何发布main.xml文件。我试过CTRL + K和CTRL + V来过去,到目前为止没什么

2 个答案:

答案 0 :(得分:3)

您的数组int[] numbers ={0,0};的类型为int

EditText接受CharSequence,所以我的猜测是它会在下面的一行引发错误:

num1.setText(numbers[0]);

尝试类似的操作(如果有效,请更新num2mysign):

num1.setText(Integer.toString(numbers[0]));

正如GrAnd所指出的,setText也接受代表int的{​​{1}}。它无法找到id为0的字符串并抛出错误。

答案 1 :(得分:0)

package com.example.showoff;

import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.text.method.DigitsKeyListener;
import android.view.Menu;
import android.view.View;
import android.widget.Button;


import android.widget.TextView;

public class MainActivity extends Activity {

        TextView edittest1;

        Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal;

        ArrayList<Float> math = new ArrayList<Float>();
        float m1;
        float m2;
        float temp;

        int currentOperation = 0;
        int nextOperation;

        final static int ADD = 1;
        final static int SUBTRACT = 2;
        final static int MULTIPLY =3;
        final static int DIVISION = 4;
        final static int EQUALS = 0;
        final static int CLEAR = 1;
        final static int DONT_CLEAR = 0;
        int clearDisplay = 0;




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

            edittest1 = (TextView) findViewById(R.id.edittest1);



            one =(Button) findViewById(R.id.btnNum1Id);
            two =(Button) findViewById(R.id.btnNum2Id);
            three =(Button) findViewById(R.id.btnNum3Id);
            four =(Button) findViewById(R.id.btnNum4Id);
            five =(Button) findViewById(R.id.btnNum5Id);
            six =(Button) findViewById(R.id.btnNum6Id);
            seven =(Button) findViewById(R.id.btnNum7Id);
            eight =(Button) findViewById(R.id.btnNum8Id);
            nine =(Button) findViewById(R.id.btnNum9Id);
            zero =(Button) findViewById(R.id.btnNum0Id);
            add =(Button) findViewById(R.id.btnNumAddId);
            sub =(Button) findViewById(R.id.btnNumSubId);
            mul =(Button) findViewById(R.id.btnNumMulId);
            div =(Button) findViewById(R.id.btnNumDivId);
            cancel =(Button) findViewById(R.id.btnNumClearId);
            equal =(Button) findViewById(R.id.btnNumEqualId);

            edittest1.setKeyListener(DigitsKeyListener.getInstance(true,true));

            registerListeners();


    }

    private void registerListeners() {
        // TODO Auto-generated method stub

        one.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                    edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
               edittest1.append("1");

            }
        });

        two.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                    edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("2");

            }
        });

        three.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                   edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("3");

            }
        });
        four.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                  edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("4");

            }
        });

        five.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                   edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("5");

            }
        });

        six.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                   edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("6");

            }
        });
        seven.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                    edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("7");

            }
        });

        eight.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                    edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("8");

            }
        });

        nine.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                    edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("9");

            }
        });
        zero.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (clearDisplay == CLEAR) {
                    edittest1.setText("");
                }
                clearDisplay = DONT_CLEAR;
                edittest1.append("0");

            }
        });
        add.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {


                calcLogic(ADD);
                }
            }
        );

        sub.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calcLogic(SUBTRACT);
            }               
        });
        mul.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calcLogic(MULTIPLY);

            }
        });
        div.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calcLogic(DIVISION);                    
            }
        });
        equal.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                calcLogic(EQUALS);

            }
        });
        cancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                edittest1.setText("0");
                m1 = 0;
                m2 = 0;
                math.removeAll(math);
                currentOperation = 0;
                nextOperation = 0;    

            }
        });


}
    private void calcLogic(int operator){
         math.add(Float.parseFloat(edittest1.getText().toString()));

            if (operator != EQUALS) {
                nextOperation = operator;
            }
            else if  (operator == EQUALS){
                nextOperation = 0;
                //operator=' ';
            }



            switch (currentOperation) {
            case ADD:               
                m1 = math.get(0);
                m2 = math.get(1);

                math.removeAll(math);

                math.add(m1 + m2);


                edittest1.setText(String.format("%.3f", math.get(0)));



                break;
            case SUBTRACT:
                m1 = math.get(0);
                m2 = math.get(1);

                math.removeAll(math);

                math.add(m1 - m2);

                edittest1.setText(String.format("%.3f", math.get(0)));
                break;
            case MULTIPLY:
                m1 = math.get(0);
                m2 = math.get(1);

                math.removeAll(math);

                math.add(m1 * m2);

                edittest1.setText(String.format("%.3f", math.get(0)));
                break;
            case DIVISION:
                m1 = math.get(0);
                m2 = math.get(1);

                math.removeAll(math);

                math.add(m1 / m2);

                edittest1.setText(String.format("%.3f", math.get(0)));
                break;
            }

            clearDisplay = CLEAR;
            currentOperation = nextOperation;
            if (operator == EQUALS) {
                m1 = 0;
                m2 = 0;
                math.removeAll(math);
            }

        }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}