开发者

The process has stopped. Android calculator trouples

After being pointed in the right direction to learn about views and layouts I was able to make a calculator that I thought looked pretty nice. I added some very basic code to it that is far from elegant but i wanted to get my feat wet with making a simple app. So far it only says the process has stopped and to try again. I am 100 percent positive that it is my code and not my ui making this happen. I was able to make a basic button counter before with 1 button but now with 15 buttons I think I screwed up.

Here is the code for the calculator called hellocats(i was following a basic tutorial and kept on adding)

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;

        }
    });
       but开发者_开发问答ton7.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;

        }
       });


}
}

Here is the layout file 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>  

What did I do incorrectly in my java file and how can I fix it and learn from it?

Thank you:Aslo i am very new to your website and so far cannot figure out for the life of me how to post the main.xml file. I tried CTRL+K and CTRL+V to past it in and so far nothing


Your array int[] numbers ={0,0}; is of type int.

EditText accepts a CharSequence so my guess is that it throws an error at the line below:

num1.setText(numbers[0]);

Try something like (if it works, update then num2 and mysign):

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

As GrAnd pointed out, setText also accepts an int that represents a resourceId. It couldnt find the string with id 0 and threw the error.


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

}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜