Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 39

Java.lang.ClasscastException

06.05.2015, 15:21. Показов 1663. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу на андроид, но не суть. Есть один класс, наследующий от application, например MyApp. В MainActivity (главном рабочем, стартовом классе через try-catch создаю экземпляр класса MyApp следующим способом:
Java
1
MyApp myapp = (MyApp)getapplication();
В результате выбрасывает с java.lang.ClasscastException. Погуглил, в итоге в манифесте прописал строчку вида
<application android:name=".MyApp" > />. Абсолютно ничего не изменилось. Ума не приложу как исправить. Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.05.2015, 15:21
Ответы с готовыми решениями:

Ошибка java.lang.ClassCastException: com.organizer.ToDoItemDescr cannot be cast to java.util.Map
Ошибка появляется когда пытаюсь вытянуть из кастомного адаптера запись ListView. Весь лог ошибки такой: FATAL EXCEPTION: main Process:...

Ошибка: Caused by Android java.lang.ClassCastException: android.app.Application cannot be cast
Здравствуйте. Очень нужен ваш совет. При запуске приложения появляется ошибка: Caused by: java.lang.ClassCastException:...

Ava.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] link.stuzer.stattrack.data
// Print out the database as array public String getAllWeapons(){ String dbString = new String; SQLiteDatabase...

12
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.05.2015, 23:25
Grifis, что-то вы сложное для новичка взяли. Объясните цель действий, а мы вам расскажем, как всё переделать.
0
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 39
07.05.2015, 05:49  [ТС]
CoolMind, мне нужно тупо сделать глобальную переменную, чтобы она не дохла от гарбадж коллектора. Нашёл что можно сделать через неубиваемый класс наследующий от application, не получилось
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
07.05.2015, 08:32
Grifis, это можно, но опасно. Работал в разных языках с глобальными переменными, в большинстве случаев приводят к разным трудно исправляемым ошибкам. Обычно для передачи данных через формы используются параметры (в конструкторах форм).
В вашем случае можно посоветовать статическую переменную, причём её можно поместить не только в отдельный модуль, но даже в активность. Если программа завершится, или активность пересоздастся, такая переменная сохранит своё значение. К сожалению, при следующем запуске она снова будет иметь то же значение, пока не перезапустится JVM. Поэтому можно дополнительно предусмотреть проверку на запуск программы и повторную инициализацию этой переменной.
Но вообще надо смотреть, чего вы хотите. Возможно, такой потребности и нет вовсе. Также вы можете сохранять некоторые значения в SharedPreferences.
0
07.05.2015, 08:35

Не по теме:

ТС занимается фигней с умным видом

0
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 39
07.05.2015, 11:48  [ТС]
CoolMind, в Shared сохранять не могу из-за закрытости данных (типа конфиденциальность). Со статиком как раз таки опасней, много почитал про него, тошнит уже от NPE, не хочу опять потом баги искать. Насчёт "фигни с умным видом" - Вы бы посоветовали сначала что-нибудь, а потом уже критиковали. Я точно знаю какой вылезает экспепшн, решение на поверхности, но до меня пока не доходит. Разве Статик переменная сохраняет своё значение после смерти активности/приложения? Бред, если честно
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
07.05.2015, 13:11
Grifis, к сожалению, это особенность Андроида. Я тоже долго мучался из-за того, что статические переменные уничтожаются только с завершением JVM.
В общем, я ничего не понял из вашего рассказа. Сделайте тогда отдельный класс, который бы создавался при запуске и завершался при завершении программы (что является отдельной проблемой). В нём и храните переменную. Только это всё равно ненадёжно.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.05.2015, 13:34
я сделал свой класс MyApp extends Application , прописал его в манифесте
в onCreate() в основной активити написал
Java
1
2
MyApp myApp = (MyApp) getApplication();
myApp.lol = 42;
и не получил ClasscastException

Про какой GC ты говоришь? Что он убирает? Пока программа не свернута - все статик переменные не затираются.
Я не спрашиваю зачем эти фокусы, это наверняка очень секретно, но ведь кастуется нормально (выше код).

Добавлено через 2 минуты
Цитата Сообщение от Grifis Посмотреть сообщение
В MainActivity (главном рабочем, стартовом классе через try-catch создаю экземпляр класса MyApp следующим способом:
Код Java(TM) 2 Platform Standard Edition 5.0
1
MyApp myapp = (MyApp)getapplication();
и да, эта строка не создает экземпляр никакого класса, он уже создан
0
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 39
07.05.2015, 15:45  [ТС]
Как примерно должен выглядеть манифест? Есть версия, что с ним что-то не так
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.05.2015, 15:49
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="ua.com.blabla.package">
 
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
        <activity
                android:name=".MainActivity"
                android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
 
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
 
</manifest>
0
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 39
07.05.2015, 15:51  [ТС]
То есть вы новый класс, который от application наследует, вообще нигде не прописали?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.05.2015, 15:59

Не по теме:

а блин, это из рабочего приложения, я забыл что все почистил
щас верну, проверю и перевыложу



Добавлено через 3 минуты
в том манифесте только одна строка добавилась вот тут
XML
1
2
3
<application
            android:name=".MyApp"
            android:allowBackup="true"
1
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 39
07.05.2015, 16:06  [ТС]
Да, надо было под старым тегом application делать, уже понял, раньше делал новый тег в параллель со старым. Все равно спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2015, 16:06
Помогаю со студенческими работами здесь

java.lang.NoClassDefFoundError
Не пойму, что не так. DataActivity.java находится в пакете com.example.helper, в манифесте прописано: &lt;activity...

Java.lang.ClassNotFoundException
Сам класс MainActivity обьявлен то есть создан. Но почему-то вываливает ошибки ,ЛОГ 08-25 04:03:34.080 2276-2276/? I/art: Not...

Java.lang.OutOfMemoryError
Помогите, падает приложение с ошибкой нехватки памяти. Делаю добавление фото из галереи телефона, и на 4-5м снимке приложение падает.:( ...

Ошибка java.lang.NullPointerException
Возникает ошибка при объявлении строкового массива, я проверил, в файле string все данные есть Лог ошибки: 07-31 15:25:38.258...

Ошибка java.lang.OutOfMemoryError
Здравствуйте. В приложении частенько выскакивает ошибки java.lang.OutOfMemoryError BitmapFactory.nativeDecodeAsset() и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru