Я видел, как System.Drawing выбрасывает OutOfMemoryExceptions даже тогда, когда его не хватает. Некоторые функции GDI +, по-видимому, просто возвращают глупый код ошибки.
IIRC, вы получите исключение OutOfMemoryException, если попытаетесь использовать LinearGradientBrush для заполнения прямоугольника, ширина или высота которого равна нулю. Могут быть и другие условия, но это основная проблема, с которой мы столкнулись.
В этом случае нет необходимости в try / catch. Просто добавьте оператор if
в свой код чертежа и не заполняйте прямоугольник, если ширина или высота равны нулю.
Обновление: согласно комментариям к этот ответ , это также может произойти, если вы попытаетесь загрузить поврежденный файл изображения. Для этого у вас не будет выбора, кроме как попробовать / поймать.
Вероятно, вы можете безопасно вылавливать OutOfMemoryExceptions из GDI +, но как можно меньше блокируйте блоки try. Рассмотрите возможность регистрации исключений, чтобы вы могли анализировать журналы и, когда это возможно, добавлять защитный код. Вы не хотите замаскировать real OutOfMemoryException, но вы не хотите, чтобы глупый код ошибки GDI + также разбивал ваше приложение.
То, что сказал Уилл, было правильно
R - это автоматически сгенерированный класс, который содержит константы, используемые для идентификации ваших> ресурсов. Если у вас нет файла R.java (это будет gen / eu.mauriziopz.gps / R.java в> Eclipse с 1.5 SDK), я бы порекомендовал закрыть и снова открыть ваш проект или перейти в> Project> Build all (и выбрав «Автоматически строить», пока есть рекомендация> Йозеф). Если это не сработает, попробуйте создать новый проект, если проблема будет воссоздана, чем> опубликуйте здесь снова, и мы углубимся в детали.
но я узнал, что была другая проблема, которая вызывала первую. У инструментов в каталоге SDK не было разрешений для выполнения, поэтому он был как будто не существует для Eclipse, поэтому он не создавал файл R.java
.
Таким образом, изменение разрешения и выбор «Построить автоматически» решили проблему.
Убедитесь, что вы ищете R.drawable.*
, что файл существует в ваших drawable*
папках.
Мой R-файл исчез и не будет создан - консоль сообщила об этом:
[2010-09-22 16:19:40 - myproject] res \ drawable-ldpi \ downloadNow.png: Неверный файл name: должно содержать только [a-z0-9 _.]
Итак, оказалось, что имена ресурсов не могут иметь заглавные буквы - подтвердите, что они все строчные и содержат. и _ только
Существует несколько причин, по которым R не может быть устранена .
В большинстве случаев эта ошибка возникает из-за ошибки файла XML. Эта ошибка может быть устранена с помощью Clean и rebuild вашего проекта, также вы можете перезапустить вашу андроид студию.
Иногда, когда вы кодируете что-то неправильное в AndroidManifest
, эта ошибка может возникнуть, поэтому, пожалуйста, проверьте это.
Если ваши ресурсы содержат одно и то же имя или содержат недопустимые символы, эта ошибка может возникнуть.
Если вы уже проверили их, и все же столкнулись с той же проблемой, тогда продолжайте:
Эта ошибка может возникать, когда Android Studio не может сгенерировать файл R.java правильно, поэтому вы должны выполнить следующие шаги:
Шаг 1: Безопасное удаление папки build
из каталога приложения.
Шаг 2: В Android Studio, File -> Invalidate Caches / Restart
Шаг 3: Build -> Clean Project
Затем Build -> Rebuild Project
.
, поэтому папка build
будет восстановлена и надеюсь, что ошибка исчезла.
Если ошибка все еще найдена, возможно, вы ранее выполнили рефакторинг имени пакета. В этом случае вы можете нажать ALT + ENTER
вместе для импорта R.
лучшее и более многообещающее решение
Ошибка должна уйти:)
Убедитесь, что все ваши файлы ресурсов не имеют расширения в верхнем регистре. Я обнаружил, что сохранил несколько изображений с расширением в верхнем регистре .PNG
. Я изменил его на .png
и все вернулось на круги своя.
Нажмите Alt kbd> + enter kbd> и импортируйте
или
Ctrl kbd> + F9 < / kbd>
и решено.
Полагаю, вы просто скопировали и вставили коды, или нет. В любом случае проверьте файл AndroidManifest.xml
, проверьте правильность имени package
.
Я бы сказал, что «R не может быть решен» - это нечто слишком общее и может вводить в заблуждение время от времени. У меня также была такая же проблема много раз назад, даже когда я впервые создавал новый проект (что означает, что я еще не связывался с кодом). Большую часть времени мне просто нужно обновить мой менеджер SDK (как уже упоминали некоторые люди). Но в моем недавнем случае я обнаружил, что путь к файлу моего проекта слишком длинный (что-то вроде этого E:\R&D\ANDROID\ANDROID BASIC\Folder 1\ Folder 2\..... \Folder n\MyProject
). Имена папок также содержат пробелы. Я подумал, что это может быть так, и это действительно так, когда я создал новый проект в другой папке с кратчайшим возможным путем, и ни в одном из имен папок, содержащих пробел, он работал как обычно.
О Боже, я Linux ( Ubuntu ), вот как я решил это:
Первое, что , проблема заключается в разрешении проблемы Я не видел никакой ошибки, связанной с восприятием, но это была проблема. У инструментов не было исполняемого разрешения.
Так что просто быстрое исправление (Если вы знаете точный файл, для которого требуется разрешение на выполнение, примените к ним специально команду ff.)
перейдите в каталог, в который вы положили свой SDK, тогда:
sudo chmod +x -R .
После этого перейдите на project->clean->select your project->clean
Это сработало для меня!.
Я последовал совету по установке инструментов сборки платформы. Затем в консоли появилось сообщение
<package>/gen already exists but is not a source folder. Convert to a source folder or rename it.
. Поэтому я последовал совету и установил «gen» в качестве исходной папки. Это решило проблему.
Я перепробовал большинство опций в этой теме (и многие другие), но у меня ничего не получалось. Наконец-то это сработало, и я подумал поделиться им со всеми ...
У меня есть несколько версий Eclipse IDE на моей машине (потому что я также работаю над проектами, не относящимися к Android). Случайно я создал свой проект Android, используя рабочее пространство, которое использовалось другой (не Android) версией Eclipse. Из-за этого я предполагаю, что происходило что-то странное, и моя R.java никогда не генерировалась!
Чтобы исправить это, все, что я сделал, это создал новое рабочее пространство, и волшебным образом R.java начал генерироваться, и все прошло гладко ...
Итак, пока вы пробуете все другие варианты, попробуйте и этот. И надеюсь, что это сработает для вас ...
Еще одна причина, по которой это может произойти: сегодня вечером я встретил страшную ошибку и в конце концов обнаружил, что ошибочное перетаскивание мыши, по-видимому, переместило один из классов моих собственных пакетов в иерархию другого. На самом деле нет конца тому, как вы можете ввернуться в среду Eclipse.
У меня тоже была эта проблема. Оказалось, что я случайно удалил строковый ресурс «app_name» из файла strings.xml
, что приводило к тихой ошибке. Как только я добавил его обратно, класс R был сгенерирован успешно, и все снова заработало.
Попробуйте сделать имя нового файла макета XML строчными. Например, используйте my_file.xml
вместо myFile.xml
.
Проверьте имена файлов XML. Убедитесь, что они все в нижнем регистре.
Также убедитесь, что все имена ресурсов изображений также находятся в нижнем регистре. У меня была заглавная буква в имени моего jpg-файла, и это вызвало неразрешенную ошибку R прямо в моем проекте.
Самое простое решение - Иногда вам просто нужно сохранить XML-файл, над которым вы работали, чтобы включить автогенератор.
Сохраните файл (например, main.xml), затем удалите файл R.java и посмотрим, разрешит ли регенерированная R.java проблему с разрешением R.
И еще одна вещь, которая может вызвать эту проблему:
Я установил новый ADT (v. 22). Прекращено создание папки gen
, в которую входит R.java
. Решением было также установить новые инструменты сборки Android SDK из Android SDK Manager.
Решение найдено здесь
Убедитесь, что вы установили инструмент для сборки Android из sdk manager.
щелкните правой кнопкой мыши свойства проекта -> Java BuildPath, выберите «Библиотека» и добавьте android-support.jar, выполнив следующие действия.
Перейдите в Проект-> Свойства-> Путь сборки Java, затем выберите Порядок и вкладку экспорта. Установите проверенную библиотеку android-support .jar и поместите ее в начало списка. И очистить и восстановить .. Это работает для большинства случаев
Всякий раз, когда вы получаете
R не может быть разрешено
, тогда проверьте каталог /res
, и должен быть какой-то файл, в котором есть какая-то ошибка, и что предотвращает сборку приложения. Например, это может быть файл макета или это может быть связано с отсутствием какого-либо ресурса, но вы уже определили его в файле XML.
Если у вас есть какие-либо дополнительные, даже неиспользуемые (!) Или не имеющие ссылок (!) Изображения в папке, такой как res / drawables-mdpi, которые не соответствуют соглашениям об именах файлов (может содержать только [a-z0-9_.] ), класс R.java может не генерироваться, вызывая цепочку событий всех других упомянутых постов. Надеюсь, это поможет!
Просто зайдите в список верхнего меню Android. нажмите Build Menu, в разделе Build нажмите Rebuild Project .
Если вы работаете на Mac, проверьте, был ли .DS_Store
добавлен в каталог в /res
(ls -al
в командной строке терминала). Удалите его и обновите / восстановите.
Проверьте файлы классов imports
выше и убедитесь, что нет импорта android.R
, если он его удалил, а затем нажмите Ctrl kbd> + Shift kbd > + o kbd> и выберите packagename.R
импорт, а не другой.
Для меня это было связано с использованием «приватных» отрисовок для Android:
[2015-11-26 18:59:48 - MyAndroidApp]
/Users/myname/git/MyAndroidApp/res/menu/drawer_view.xml:24:
error: Error: Resource is not public. (at 'icon' with value
'@android:drawable/ic_menu_home').
Интересно, что эти ошибки не отображались в консоли, пока я не удалил ссылку на файл с помощью иконки (тьфу!).
android:entries="@menu/drawer_view"
Теперь решение было вполне очевидным, копируя иконки в мой проект (res / drawable-XXXX /) и переключаясь на локальные ссылки.
@drawable/ic_menu_home
Надеюсь, это поможет.
Так что я сталкивался с этой проблемой несколько раз при переключении целей сборки. Обычно делаю проект >> Чисто работало на меня. Однако в последний раз этого не произошло. Наконец я попытался открыть файл default.properties, расположенный в корневой папке проекта. Я получил сообщение об ошибке о том, что он не синхронизирован с файловой системой. Я на самом деле удалил его и скопировал версию коллег, которая позволила eclipse перестроить мой R-файл. Я буду вставлять, как это выглядит ниже. Он называется «default.properties».
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=android-3
В моем случае R.java не генерировал, потому что в файле AndroidManifest.xml возникла проблема, в которой я неправильно указал название действия!
перезагрузите компьютер.
Ничто не помогло мне, кроме этого
Установите все Android SDK Build-tools и удалите import android.R из вашего класса Activity. После нажмите Project -> Очистить
import android.R;
R
- это сгенерированный класс. Если вы используете Android Development Tools (ADT) , он создается при каждой сборке проекта. Возможно, у вас отключена "Автоматическая сборка".
R - это автоматически сгенерированный класс, содержащий константы, используемые для идентификации ваши ресурсы. Если у вас нет файла R.java (это будет gen / eu.mauriziopz.gps / R.java в Eclipse с 1.5 SDK), я бы порекомендовал закрыть и повторно открыть ваш проект или перейти в Project> Build all (и выбрав «Построить автоматически», как рекомендовано Йозефом). Если это не так