C-Love511
C-Love511

Reputation: 358

Android app quitting prematurely

I am new to android development using JAVA, and I'm having an issue with a simple app I created. (Please don't laugh at it!)

All it's supposed to do is display a number in an editable textview; The three buttons on this main activity are a +, -, and reset. Super simple, right? I can't tell what I did wrong, but everytime I run the app to test, and then click on any of the buttons, it exits the app and goes back to the android home screen. Not sure what I did wrong... but here's the code I have so far:

    public class Main extends Activity {
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    Button btn_Plus;
    Button btn_Minus;
    Button btn_Reset;
    final EditText sCount= (EditText) findViewById(R.id.txtCount);;


    btn_Plus=(Button)findViewById(R.id.btnPlus);
    btn_Minus=(Button)findViewById(R.id.btnMinus);
    btn_Reset=(Button)findViewById(R.id.btnReset);

            //One way I tried to work it
        btn_Plus.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                                    //gets the text in the textview, makes it a string,
                                    //converts it to an int, calculates, then puts it 
                                    //back. 

                String iCounter = sCount.getText().toString();
                int iCount = Integer.parseInt(iCounter);
                iCount += 1;
                Integer.toString(iCount);
                sCount.setText(iCount);
            }   
    });

                    //The second way I tried -- neither way works.
        bM.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

            int iCount = Integer.parseInt(sCount.getText().toString());
                iCount -= 1;
                    if(iCount >0)
                        iCount = 0;
                Integer.toString(iCount);
                sCount.setText(iCount);
            }   
        });

        bR.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                int iCount = 0;
                Integer.toString(iCount);
                sCount.setText(iCount);


            }

        });


    }

    }

Thanks so much!

Upvotes: 0

Views: 46

Answers (1)

Karakuri
Karakuri

Reputation: 38595

Use a TextView instead, unless you plan to allow the user to directly enter the number (which it seems like you don't). Rather than do text manipulation to get the number, why don't you just store the number as a member variable, update that when a button is pressed, and change the text accordingly? This is how I would write it:

public class Main extends Activity {

    int count = 0;
    TextView textView;

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

        textView = (TextView) findViewById(R.id.txtCount);
        findViewById(R.id.btnPlus).setOnClickListener(this);
        findViewById(R.id.btnMinus).setOnClickListener(this);
        findViewById(R.id.btnReset).setOnClickListener(this);
    }

    private void updateText() {
        String text = Integer.toString(count);
        textView.setText(text);
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
        case R.id.btnPlus:
            count++;
            break;
        case R.id.btnMinus:
            count--;
            break;
        case R.id.btnReset:
            count = 0;
            break;
        }

        updateText();
    }
}

Upvotes: 1

Related Questions