Пользовательский глобальный класс приложения прерывается с сообщением «android.app.Application не может быть преобразовано в»

142

У меня есть собственный глобальный класс, который выглядит так

import android.app.Application;

public class MyApp extends Application {

    public String MainAct;

    public String getMainAct() {
        return MainAct;
    }

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

Я хочу сохранить строку в этом классе через другой Activityв его onCreateметоде.

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

Разрывается на отмеченной строке с ошибкой: Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.xxx.yyy.global.MyApp

Я проверял код пять раз и нигде не могу найти ошибку. Кто-нибудь может сказать мне, где ошибка ?!

Благодарность

сандалон
источник

Ответы:

478

В сообщении об ошибке указано, что тип возвращаемого объекта getApplication- android.app.Application. Возможной причиной этого является то, что вы не смогли определить приложение в манифесте. Убедитесь, что ваш манифест включает что-то в строках:

<application android:name=".MyApp"...
</application>
K-баллон
источник
9
Боже мой, ты прав. И я потерял последний час, пытаясь понять, почему он не хочет работать в этот раз, когда он работал 100 раз раньше :). Большое спасибо!
sandalone
9
2 года спустя, все еще спасая жизни
Врашабх Ирде
31
Привет. Я добавил это в свой манифест. Тем не менее, он все еще дает мне ClassCastException
Somu
14
Была такая же проблема несколько минут назад на Android N, манифест был правильным. Перезагрузил устройство - исключение пропало. Странно ...
artkoenig
3
@Somu очистить кеш и закрыть мгновенный запуск, перестроить проект, это сформулировано для меня, я думаю, что это ошибка мгновенного запуска.
LenaYan
13

Еще одно решение для старых Android-устройств или эмуляторов . Вы определили приложение в манифесте:

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

а у вас все еще есть эта проблема?

Попробуйте отключить мгновенный запуск:

  1. Отключить мгновенный запуск
  2. Очистите и перестройте проект
  3. Удалите приложение с устройства и установите его снова без мгновенного запуска
Вал
источник