Domanda

ho un semplice programma di attività in android.fondamentalmente la classe estende Attività.Ma quando tento di ottenere una ClassCastException nel costruttore della classe.io non hanno nemmeno un costruttore definito, quindi è necessario essere nel costruttore della superclasse, che è Attività.

purtroppo il debugger non dare alcuna informazione dettagliata su che classe sta cercando di cast.

qui è il stacktrace:

Thread [<1> main] (Suspended (exception RuntimeException))  
    ActivityThread$PackageInfo.makeApplication(boolean, Instrumentation) line: 649  
    ActivityThread.handleBindApplication(ActivityThread$AppBindData) line: 4232 
    ActivityThread.access$3000(ActivityThread, ActivityThread$AppBindData) line: 125    
    ActivityThread$H.handleMessage(Message) line: 2071  
    ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
    Looper.loop() line: 123 
    ActivityThread.main(String[]) line: 4627    
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
    Method.invoke(Object, Object...) line: 521  
    ZygoteInit$MethodAndArgsCaller.run() line: 868  
    ZygoteInit.main(String[]) line: 626 
    NativeStart.main(String[]) line: not available [native method]  

e quando guardo dentro il runtimeexception ottengo:

detailMessage "Unable to instantiate application com.test.MyApp: java.lang.ClassCastException: com.test.MyApp" (id=830067694464)

il solo codice

package com.test;
import android.app.Activity;
public class MyApp extends Activity {

}
È stato utile?

Soluzione

  1. Apri AndroidManifest.xml
  2. Trova tag application
  3. attributo Rimuovere android:name (se esiste)
  4. Aggiungi attributo android:name="android.app.Application"

Questo è quello che ho fatto e il problema era andato.

P.S:. Al punto 4 utilizzare il nome di classe applicazione personalizzata se si dispone di uno (che è opzionale)

Altri suggerimenti

Ho avuto lo stesso problema.

Nel mio caso ho avuto una classe che un'applicazione estesa che è stato fatto riferimento nel file manifesto come un attributo del tag applicazione.

Quando ho ri-scomposto la classe Eclipse non ha incluso il riferimento nel manifesto (comprensibilmente ma frustrante e confusamente) che ha portato in questo numero.

Questo anche legami con la risposta di Maxim, ma la spiegazione sembra essere la disparità.

Quando ho cambiato il nome attributo per corrispondere al file che ho rinominato il problema è stato risolto.

ho fatto uno stupido errore,

my_textView = (<b>Button</b>) findViewById(R.id.tvMyTextView);

e questo ha causato il ClassCastException ..

Ho cambiato questo per l'ovvio,

my_textView = (<b>TextView</b>) findViewById(R.id.tvMyTextView);

e ha funzionato ..

Non so come, ma tutto quello che posso dire è che tali errori stupidi possono anche causare il problema di cui sopra ..

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
}

aggiungere questo post la vostra piena Manifest.xml

Ho avuto lo stesso problema che si verificano di tanto in tanto, a volte apparentemente innescato da elementi riordino in un layout XML.

Se si consente l'applicazione per continuare l'esecuzione dopo l'eccezione non rilevata, si dovrebbe trovare che si ottiene una stacktrace molto più utile in "adb logcat" di quanto si può facilmente uscire dal debugger nel punto in cui si ferma.

Questo di solito vi puntare nella posizione in cui in realtà si è verificato l'eccezione, che in genere non è il luogo dove si ferma nel debugger.

Nel mio caso, mi sembrava di essere una mancata corrispondenza tra gli ID di risorse - in movimento le cose intorno nel file XML sembrava confondere le cose in modo tale che quando ho fatto view.findViewById (R.id.something) Non sono stato io il rientrante oggetto corretto. Stavo facendo il casting l'oggetto in una TextView, che avrebbe dovuto essere perfettamente valido in base al contenuto del mio layout XML, ma è stato schiantarsi.

Si possono trovare che in realtà hanno un bug per cui si sta facendo un cast non valido, che sarà certamente causare questa eccezione accada, ma nel mio caso costringendo un ambiente pulito e ricostruire risolto il problema - è rigenerato i layout compilati e delle risorse ID da zero, e tutto ha funzionato come previsto.

Se si utilizza Google Maps:

<uses-library android:name="com.google.android.maps" /> 

Ricordate questa linea. Non riesco a credere che ho dimenticato e sprecato così tanto tempo.

Sono d'accordo con la risposta di Mahesh .. Questo avverrà grazie ad assegnare la vista senza colata ...

Ciò si verifica anche se si sta gettando un ImageButton Vista al pulsante Visualizza o qualche altro Visualizzazione classi.

Ho avuto lo stesso problema, e io capire, che questo ha causato l'uso errato in preferences.xml <CheckBoxPreference android:key="@+id/string" /> doveva essere il cambiamento di <CheckBoxPreference android:key="string" />

Ha avuto un problema simile con un ClassCastException dirmi non riuscivo a lanciare un EditText come TextView. Non stavo cercando di. Ho cercato di pulire il progetto, ma ha ricevuto diversi 'possibile depositare Non eliminare ...' errori. Chiuso Eclipse, riaperto, ripulito il progetto. Il problema è andato via. Chiaramente questo non funziona in tutti i casi, ma è una possibilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top