2013-06-22 18 views
6

Entwickeln meiner ersten Android-Rechner-Anwendung, gelang es mir eine TextView in einer neuen Aktivität zu aktualisieren, indem Sie die Antwort über eine Absicht, aber dies erfordert den Benutzer zurück zu schlagen um eine weitere Berechnung durchzuführen. Ich versuche, die doCalculation-Schaltfläche ein einfaches TextView in der MainActivity zu aktualisieren und den Fehler zu erhalten:android.widget.Button kann nicht in android.widget.EditText umgewandelt werden

06-22 11: 08: 17.318: E/AndroidRuntime (31328): Verursacht von: java.lang.ClassCastException: android.widget.Button kann nicht auf android.widget.EditText gegossen werden

hier ist mein 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); 
} 

als Referenz, hier ist der Code, der erfolgreich eine neue Aktivität startet gearbeitet:

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

UPDATE, die XML für:

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

Danke für Ihre Hilfe, -Michael

Antwort

13

Es ist wie entweder R.id.number1 oder R.id.number2 scheint, ist ein Knopf. Überprüfen Sie Ihr XML und stellen Sie sicher, dass es ein EditText ist.

Edit: Ursprüngliche Antwort hat nicht funktioniert, aber die Reinigung des Projekts löste das Problem.

+0

Danke für die schnelle Antwort. Bestätigen beide sind EditText. – Michael

+0

XML-Code als Referenz hinzugefügt. Button-ID ist @ + ID/CalculateBtn – Michael

+1

Können Sie Ihre gesamte XML-Datei anzeigen? – Oleksiy

0

Ich hatte gerade dieses Problem. Es scheint, dass die XML-Layoutdatei nicht korrekt kompiliert wurde. Oder es ist nicht in der Liste der zu kompilierenden Dateien enthalten.

0

Ich hatte die gleiche Situation, aber ich fand heraus, dass es zwei Textansichten mit gleichen IDs in verschiedenen Aktivitäten, also änderte ich eine von ihnen und das Programm lief klar, so überprüfen Sie die IDs aller Ihrer Editiertext und Schaltflächen und ändern die Samilier auch wenn sie in anderen Aktivitäten waren und ich denke, es wird ohne Probleme laufen

0

Ich folgte den Schritten in der Antwort (gereinigt und dann stellte sicher, es ist die ID) und bemerkte, dass die Quelle meiner EditText R.id bringt mich zum EditText. Dachte, das ist definitiv kein IDE-Cache-Problem.

Was ich getan habe ist das Linearlayout

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

zu

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

Aus irgendeinem Grunde ist es das Problem behoben zu ändern (hatte ich dieses ganze Layout in etwas eingewickelt anderes, das ich vor kurzem nur entfernt).

Verwandte Themen