Подтвердить что ты не робот

Android: включение нескольких пакетов Java для манифеста

В приложении, которое я разрабатываю, есть много действий, организованных в семь пакетов Java. Первоначально я написал все кодирование и материал для каждой группы действий в пакете java как разные проекты.

Теперь я нахожусь в точке, где я хочу объединить все пакеты в один проект. Когда я добавляю новый пакет в папку src, я получаю сообщение об ошибке для всех моих значений R.id. * ( "R не может быть разрешен" ).

Мой инстинкт говорит мне, что есть что-то фантастическое, что я должен добавить манифест проекта, но я не могу найти какой-либо ресурс в сети, чтобы рассказать мне, как это сделать.

(Примечание: я прочитал этот и этот, и я все еще могу 't выяснить, как добавить дополнительные пакеты в мой проект.)

4b9b3361

Ответ 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, либо просто используйте один пакет для всего вашего проекта.