2010-04-30 2 views
2

Я попытался вызвать другое действие из своей основной ацитивности, которая находится в файле jar.Захватывающая активность, которая находится в банке

Класс clazz = Class.forName (getPackageName() + getActivityName() ""); startActivity (новый Intent (это, clazz));

Я делаю это так, потому что знаю только название класса. Это прекрасно работает, но, к сожалению, все файлы ресурсов не могут быть найдены при загрузке активности из файла jar. При первом наступлении загрузки файла Рез есть ResourceNotFoundException:

04-30 11: 18: 46,944: ERROR/AndroidRuntime (1749): Вызванный: android.content.res.Resources $ NotFoundException : Код ресурса: 0x7f040006

Какие-либо намеки на это?

+0

@Sebi: Вы видели этот вопрос? Это может вам помочь. http://stackoverflow.com/questions/2716879/android-invoke-activity-from-within-jar – Feanor

+0

Да, я использовал это как руководство для этого. – 2010-04-30 10:28:07

ответ

3

Ваш JAR не может ссылаться на ресурсы.

Чтобы быть более конкретным:

  • Ваш JAR не может содержать ресурсы
  • Ваш код Java в JAR не может использовать R.layout или R.id или R.drawable или любой из R. констант относятся к ресурсам

Вам необходимо иметь все свои ресурсы в приложении, которое повторно использует JAR, и Java-код JAR должен либо иметь идентификаторы ресурсов, которые были переданы в него (например, через met hod) или используйте getIdentifier(), чтобы узнать идентификатор ресурса во время выполнения из представления String.

+0

ОК спасибо большое за ваш ответ! Но разве на самом деле нет другого способа сделать это? Если я не могу изменить файл jar, как мне удастся выполнить ваше решение? – RoflcoptrException

+0

«Но разве на самом деле нет другого способа сделать это?» Я не уверен, что это такое. «Если я не могу изменить файл jar, как мне удастся сделать ваше решение?» Поговорите с тем, кто создал JAR, и укажите их на этот вопрос StackOverflow. Если они не создали JAR правильно, вы ничего не можете сделать, если у вас нет исходного кода, и в этом случае вы можете попробовать его исправить самостоятельно. – CommonsWare

+0

ОК, чтобы уточнить мой ответ: Нет другого способа получить приложение в запуске jar, чем разместить файлы ресурсов в приложении, вызывающем приложение в файле jar. – RoflcoptrException

Смежные вопросы