7

Developing my first Android calculator application, I succeeded in updating a TextView in a new activity by passing the answer via an intent, but this requires the user to hit Back to perform another calculation. I'm trying to make the doCalculation button update a simple TextView in the MainActivity and getting the error:

06-22 11:08:17.318: E/AndroidRuntime(31328): Caused by: java.lang.ClassCastException: android.widget.Button cannot be cast to android.widget.EditText

Here's my code:

/** Called when the user clicks the Calculate! button */
public void doCalculation(View view) {
    // Do something in response to button
    int answerInt;
    String answer;
    EditText numberOne = (EditText) findViewById(R.id.number1);
    EditText numberTwo = (EditText) findViewById(R.id.number2);
    int numberOnee = Integer.parseInt(numberOne.getText().toString());
    int numberTwoo = Integer.parseInt(numberTwo.getText().toString());
    answerInt = numberOnee * numberTwoo;
    answer = Integer.toString(answerInt);

    TextView homeAnswerView = (TextView) findViewById(R.id.homeAnswerView);
    homeAnswerView.setTextSize(40);
    homeAnswerView.setText(answer);
}

For reference, here's the code that worked successfully launching a new activity:

// Called when the user clicks the Calculate! button
public void doCalculation(View view) {
    // Do something in response to button
    int answerInt;
    String answer;
    Intent intent = new Intent(this, DisplayCalculationActivity.class);
    EditText numberOne = (EditText) findViewById(R.id.number1);
    EditText numberTwo = (EditText) findViewById(R.id.number2);
    int numberOnee = Integer.parseInt(numberOne.getText().toString());
    int numberTwoo = Integer.parseInt(numberTwo.getText().toString());
    answerInt = numberOnee * numberTwoo;
    answer = Integer.toString(answerInt);
    intent.putExtra(EXTRA_MESSAGE, answer);
    startActivity(intent);
}

UPDATE, the XML for reference:

<EditText
    android:id="@+id/number2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView3"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:ems="10"
    android:inputType="number" />

<EditText
    android:id="@+id/number1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:ems="10"
    android:inputType="number"
    android:singleLine="true" />

<Button
    android:id="@+id/calculateBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/number2"
    android:layout_alignRight="@+id/number2"
    android:layout_below="@+id/number2"
    android:layout_marginTop="14dp"
    android:onClick="doCalculation"
    android:text="Calculate!" />

Thank you for your help, -Michael

4 Answers 4

12

It seems like either R.id.number1 or R.id.number2 is a Button. Check your XML and make sure it's an EditText.

Edit: Original answer didn't work, but cleaning the project solved the problem.

Sign up to request clarification or add additional context in comments.

5 Comments

Thanks for the quick reply. Confirming both are EditText.
Try one more thing: clean your project
Cleaning the project fixed it! Thank you!!
I tried to up-vote your answer but don't have the reputation. In any case, thanks again.
I followed the steps in the answer (cleaned and then made sure it's the id) and noticed that going to the source of my EditText R.id brings me to the EditText. Thought this is definitely not a IDE cache problem. What I did do is to change the LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" to android:layout_width="match_parent" android:layout_height="match_parent" For some reason it fixed the issue (I had this whole layout wrapped in something else that I just recently removed).
0

I've just had this problem. It seems that the xml layout file is not compiled properly. Or rather it is not included in the list of changed files to be compiled.

Comments

0

i was having the same situation but i found out that there are two textviews with same ids in different activities so i changed one of them and the program ran clearly so check the ids of all your edittext and buttons and change the samilier even if they were in other activities and i think it will run with out any problems

Comments

0

I followed the steps in the answer (cleaned and then made sure it's the id) and noticed that going to the source of my EditText R.id brings me to the EditText. Thought this is definitely not a IDE cache problem.

What I did do is to change the LinearLayout

android:layout_width="fill_parent" 
android:layout_height="fill_parent"

to

android:layout_width="match_parent"
android:layout_height="match_parent"

For some reason it fixed the issue (I had this whole layout wrapped in something else that I just recently removed).

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.