Frage

Ich bin im Adnroid 2.2 SDK und konnte meinen statischen Block in der MultiUserChat-Klasse nicht ausführen.Ich habe versucht, das Laden als zu erzwingen

try 
{
    String qual = MultiUserChat.class.getName();
    ClassLoader.getSystemClassLoader().loadClass(qual);

} catch (ClassNotFoundException e) {

    e.printStackTrace();
}

und es trifft immer den Fangblock.'qual' erhält den gültigen Namen der Klasse ... was kann das sein?

War es hilfreich?

Lösung

Ihre App enthält sowohl Framework-Klassen wie ArrayList und Activity als auch Anwendungsklassen wie FlashlightActivity.Die Framework-Klassen werden vom Klassenladeprogramm system (und auch von der Bootstrap-Klasse loadeR) geladen.Die Anwendungsklassen werden vom Klassenladeprogramm application geladen.

Der Systemklassenlader kann nur die Systemklassen sehen.Es kennt den Pfad der Anwendungsklasse nicht und kann nicht zum Laden von Anwendungsklassen verwendet werden.Dazu müssen Sie den Application Class Loader verwenden.Der einfachste Weg, einen Verweis auf den Loader für Anwendungsklassen zu erhalten, ist über eine Anwendungsklasse:

try {
    String qual = MultiUserChat.class.getName();
    MyActivity.class.getClassLoader().loadClass(qual);
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top