2013-06-22 15 views
6

初めてのAndroid電卓アプリケーションを開発して、新しいアクティビティのTextViewをインテントで渡すことでTextViewを更新することに成功しましたが、これはユーザーがBackを押す必要があります別の計算を実行する。 doCalculationボタンをMainActivityの単純なTextViewに更新し、エラーを取得しようとしています:android.widget.Buttonをandroid.widget.EditTextにキャストすることはできません

06-22 11:08:17.318:E/AndroidRuntime(31328):原因:java.lang.ClassCastException: android.widget.Buttonはandroid.widget.EditText

にキャストすることはできません。ここに私のコードです:参考

/** 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); 
} 

、ここで新しい活動を立ち上げ、正常に働いたコードは次のとおりです。

// 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、参照のためのXML:

<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!" /> 

はあなたの助けをありがとう、 -Michael

答えて

13

それはR.id.number1またはR.id.number2のいずれかのように思えるがボタンです。 XMLをチェックし、それがEditTextであることを確認してください。

編集:元の回答は機能しませんでしたが、プロジェクトをクリーニングすることで問題は解決しました。

+0

クイック返信ありがとうございます。両方を確認するのはEditTextです。 – Michael

+0

参照のためにXMLコードが追加されました。ボタンのIDは@ + id/calculateBtnです – Michael

+1

XMLファイル全体を表示できますか? – Oleksiy

0

私はちょうどこの問題を抱えていました。 xmlレイアウトファイルが正しくコンパイルされていないようです。あるいは、コンパイルする変更されたファイルのリストには含まれていません。

0

私は同じ状況を抱えていましたが、異なるアクティビティで同じIDを持つ2つのテキストビューがあることがわかりました。そのうちの1つを変更してプログラムが正常に実行されたので、すべての編集テキストとボタンのIDを確認し、たとえ彼らが他の活動に参加していても問題なく動くと思っても

0

私は回答のステップに従いました(掃除してIDが確実であることを確認しました)、私のEditText R.idEditTextへ。これは間違いなくIDEキャッシュの問題ではないと思いました。私がやったのは何

が、それは問題を修正し、いくつかの理由で

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

へのLinearLayout

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

を変更することです(私はちょうど最近削除何か他のものに包まれたこの全体のレイアウトを持っていました)。

関連する問題