Benutzerdefinierte globale Anwendungsklasse bricht mit „android.app.Application can not cast to“

Lesezeit: 2 Minuten

Ich habe eine benutzerdefinierte globale Klasse, die so aussieht

import android.app.Application;

public class MyApp extends Application {

    public String MainAct;

    public String getMainAct() {
        return MainAct;
    }

    public void setMainAct(String mainAct) {
        MainAct = mainAct;
    }
}

Ich möchte eine Zeichenfolge in dieser Klasse über eine andere beibehalten Activity in seinem onCreate Methode.

    String local = "myLocalVariable";
    ((MyApp) getApplication()).setMainAct(local); //breaks here!!!
    String name = ((MyApp) getApplication()).getMainAct();

Es bricht auf der markierten Zeile mit Fehler ab: Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.xxx.yyy.global.MyApp

Ich habe den Code fünfmal überprüft und kann nirgendwo einen Fehler finden. Kann mir jemand sagen wo der Fehler liegt?!

Vielen Dank

Der Fehler besagt, dass der Typ des zurückgegebenen Objekts von getApplication ist android.app.Application. Eine mögliche Ursache dafür ist, dass Sie die Anwendung nicht im Manifest definiert haben. Stellen Sie sicher, dass Ihr Manifest Folgendes enthält:

<application android:name=".MyApp"...
</application>

  • Oh mein Gott, du hast recht. Und ich habe die letzte Stunde verloren, um herauszufinden, warum es diesmal nicht funktionieren will, wenn es vorher 100 Mal funktioniert hat :). Danke vielmals!

    – Sandalen

    15. Mai 2012 um 19:27 Uhr

  • 2 Jahre später immer noch Leben retten

    – Vrashabh Irde

    29. September 2014 um 15:19 Uhr

  • Hey. Ich habe dies zu meinem Manifest hinzugefügt. Es gibt mir jedoch immer noch eine ClassCastException

    – Somu

    31. Juli 2015 um 19:45 Uhr

  • Hatte das gleiche Problem vor Minuten auf Android N, das Manifest war korrekt. Gerät neu gestartet – Ausnahme war weg. Seltsam…

    – artkönig

    16. Oktober 2016 um 11:50 Uhr

  • @Somu Cache bereinigen und Instant Run schließen, Projekt neu erstellen. Dies ist für mich formuliert. Ich denke, dies ist ein Fehler von Instant Run.

    – LenaYan

    21. Oktober 2016 um 2:47 Uhr

Benutzer-Avatar
Val

Eine andere Lösung für ältere Android-Geräte oder Emulatoren. Sie haben eine Anwendung im Manifest definiert:

    <application 
           android:name=".MyApp"...
    </application>

aber du hast das problem immer noch?

Versuchen Sie, Instant Run zu deaktivieren:

  1. Deaktivieren Sie eine Sofortausführung
  2. Bereinigen Sie das Projekt und erstellen Sie es neu
  3. Entfernen Sie die App vom Gerät und installieren Sie sie erneut, ohne Instant Run

1017540cookie-checkBenutzerdefinierte globale Anwendungsklasse bricht mit „android.app.Application can not cast to“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy