2010-12-29 13 views
3

Ich spiele mit dem 'durchsuchbaren Wörterbuch' herum, um in Android-Entwicklung zu gelangen.Unerwartete ClassCastException mit findViewById

Mein Problem ist, dass ich einige ClassCastException beim Ändern der XML-Layouts bekomme.

Meine Vermutung ist, dass die R-Datei veraltet ist, aber was ist seltsam ist, dass ich immer noch das Problem habe, auch nachdem ich es neu erstellt habe.

Hier sind die releveant Stück Code und log:

Die Log-Datei:

Verursacht durch: java.lang.ClassCastException: android.widget.ImageButton E/Android Runtime (438): bei eu.accleaner.android.WordActivity.onCreate (WordActivity.java:87)

Die inkriminierten Linie in der Aktivität:

mDefinition = (TextView) findViewById(R.id.definition); 

Vielen Dank im Voraus für Ihre Hilfe.

Cheers,

Vincent

Antwort

3

Von dem, was es sieht aus wie es mit der ID „Definition“ in der XML ein Image ist, und Sie versuchen, es zu einem Textview zu werfen. Ändern Sie Ihre TextView-Umwandlung in ImageButton.

+20

Dies kann oft dadurch verursacht werden, dass Ressourcen-ID-Werte in 'R.java' nicht mit anderen vorkompilierten Klassen synchronisiert sind. Wenn Sie Eclipse verwenden, führen Sie ein Projekt | Reinigen. Wenn Sie über die Befehlszeile erstellen, verwenden Sie 'ant clean install' statt nur' ant install'. – CommonsWare

3

Ich hatte ähnliches Problem. R.java erzeugt IDs auf Basis von Android: id in xml:
public static final int imageButton01=0x7f050001;
public static final int definition=0x7f050002;

Wenn ich neue Image hinzufügen R.java zu
public static final int imageButton01=0x7f050001;
public static final int imageButton02=0x7f050002;
public static final int definition=0x7f050003;

Aufgrund Synchronisationsproblem R.id.definition kehrt alte ID 0x7f050002 in mDefinition = (TextView) findViewById(R.id.definition); aktualisieren Aber es entspricht zu einem anderen Element (ImageButton02) gemäß aktualisierten R.java.

So haben wir Classcast

+0

brillante Erklärung Sir –

0

Abhilfe zu beheben: Weisen Sie einige neue 'id' Wert in der Layout-XML und findViewById().

Es ist höchstwahrscheinlich ein Fehler.