Android: включение нескольких пакетов Java для манифеста
В приложении, которое я разрабатываю, есть много действий, организованных в семь пакетов Java. Первоначально я написал все кодирование и материал для каждой группы действий в пакете java как разные проекты.
Теперь я нахожусь в точке, где я хочу объединить все пакеты в один проект. Когда я добавляю новый пакет в папку src, я получаю сообщение об ошибке для всех моих значений R.id. * ( "R не может быть разрешен" ).
Мой инстинкт говорит мне, что есть что-то фантастическое, что я должен добавить манифест проекта, но я не могу найти какой-либо ресурс в сети, чтобы рассказать мне, как это сделать.
(Примечание: я прочитал этот и этот, и я все еще могу 't выяснить, как добавить дополнительные пакеты в мой проект.)
Ответы
Ответ 1
Убедитесь, что оператор import в верхней части Activity ссылается на правильный R файл. Каждый проект имеет свой собственный R файл, поэтому, если вы копируете Activity из одного проекта в другой, он все равно будет пытаться ссылаться на R файл из старого проекта.
Вам не нужно явно включать в манифест разные пакеты. Чтобы включить действия из двух разных пакетов, скажите:
com.example.package1.Activity1
com.example.package2.Activity2
вы можете сделать следующее:
<manifest package="com.example" . . . >
<application . . .>
<activity android:name=".package1.Activity1" . . . />
<activity android:name=".package2.Activity2" . . . />
</application>
</manifest>
Ответ 2
Android автоматически создает класс с именем "R" в пакете, объявленном в вашем манифесте приложения. Когда все ваши классы находятся внутри этого пакета, вам никогда не придется явно импортировать "R". Однако, если у вас есть классы в других пакетах, они не будут видеть его по умолчанию, и вам нужно будет включить
import <app-package>.R;
или
import <app-package>.*;
(подмена фактического имени <app-package>
, конечно).
Если вы включаете проекты библиотек в свое приложение, тогда они могут ссылаться на свои собственные классы "R", которые будут сгенерированы в их домашних пакетах, Если у вас есть несколько независимых действий, которые необходимо объединить в одно окончательное приложение, вы должны серьезно рассмотреть возможность использования библиотечных проектов вместо того, чтобы вручную слить вещи. Это может сделать жизнь намного легче для вас.
Ответ 3
Проблема может сохраняться, даже если мы изменим файл манифеста.
чтобы избежать этого, мы должны добавить import com.example.R;
во всех наших классах.
example: MainActivity.class в пакете2
pakage com.example.package2.Activity2
import com.example.R;
(TestActivity.class в пакете1)
pakage com.example.package1.Activity1
import com.example.R;
Ответ 4
Убедитесь, что файл макета → main.xml верен и включает android:id="@+id/whateverIdHasCausedYouTheError"
Затем файл R.java будет обновлен, чтобы включить id.. и bam, ваша ошибка должна исчезнуть.
Ответ 5
Я использую APK Builder, и все ресурсы XML объявляются в автоматически сгенерированном Java файле aapt. Его имя пакета, как вы знаете, имя пакета манифеста Android.
Затем до меня дошло, что у XML файлов нет имен пакетов. Все XML файлы являются только XML файлами. Затем aapt генерирует класс R со всеми ресурсами XML в одном классе R. Имя пакета этого класса - это имя в манифесте.
Поэтому либо импортируйте package-name.R, либо просто используйте один пакет для всего вашего проекта.