Android: ошибка, когда многие пакеты используют R.java - PullRequest
0 голосов
/ 08 марта 2012

У меня есть две упаковки, например, packageA и packageB. в packageA у меня есть класс с именем classA, который берет ресурс из R.java: пример:

TextView textView = (TextView) findViewById(R.id.textView);

то же самое с пакетом B. У меня есть класс с именем classB, который берет ресурс из R.java

EditText editText = (EditText) findViewById(R.id.EditText);

Когда я хочу, чтобы Android запустил classB, я должен изменить Android Manifest file, изменить пакет по умолчанию с com.packageA на com.packageB, чтобы класс A обнаружил ошибку в строке выше. То же самое, когда я переворачиваюсь.

Итак, как я могу решить эту проблему: использовать несколько пакетов, и многие из них используют Resource data. Пожалуйста, помогите мне.

спасибо:)

Ответы [ 3 ]

3 голосов
/ 08 марта 2012

Если в вашем манифесте указан пакет com.packageA, то в файлах пакета A вам ничего не нужно делать.В файлах packageB используйте import com.packageA.R; без изменения имени пакета в манифесте.Таким образом, ваш packageB может получить доступ к файлу R.java.

1 голос
/ 08 марта 2012

Вам не нужно указывать все ваши пакеты в файле манифеста.Просто объявите пакет класса А и запустите программу.Но убедитесь, что вы импортируете пакет класса B в свой Java-класс, где вы его вызываете.Файл манифеста по умолчанию объявляет первый пакет, который вы упоминаете при создании нового проекта Android.

Дайте мне знать, если это решит вашу проблему

0 голосов
/ 31 мая 2012

У меня была та же проблема, потому что я перебрасывал проект в другой с другими ресурсами, и потому что я использовал scala (2.8.3) и treeshaker, плагины не позволяли мне правильно использовать проекты библиотек Android.

Я решил проблему, добавив пользовательский шаг сборки с помощью ant, который создает дубликат R.java в пакете, который я хотел.

Я добавил файл с именем custom_rules.xml в корень моегопроект MyProjectExtended со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
  <project name="MyProjectExtended" default="debug">
  <condition property="exe" value=".exe" else=""><os family="windows" /></condition>
  <property name="aapt" location="C:\Program Files (x86)\Android\android-sdk\platform-tools\aapt${exe}" />
  <property name="android.jar" location="C:\Program Files (x86)\Android\android-sdk\platforms\android-10\android.jar" />

  <!-- Generates the R.java file for this project's resources. -->
  <target name="debug">
     <echo>Generating R.java / Manifest.java from the resources...</echo>
 <exec executable="${aapt}" failonerror="true">
   <arg value="package" />
   <arg line="" />
   <arg value="-m" />
   <arg value="-J" />
   <arg path="gen" />
   <arg value="-M" />
   <arg path="AndroidManifest.xml" />
   <arg value="-S" />
   <arg path="res" />
   <arg value="-I" />
   <arg path="${android.jar}" />
   <arg value="--custom-package" />
   <arg value="com.MyProjectExtendedPackage" />
     </exec>  
  </target>
</project>

Затем я добавил пользовательский шаг сборки:

  • Щелкните правой кнопкой мыши на проекте, свойства
  • На вкладке "Builder ", нажмите" New ... "
  • Выберите" Ant Builder ", продолжайте.
  • Для BuildFile ${workspace_loc:/MyProjectExtended/custom_rules.xml}
  • Базовый каталог: ${workspace_loc:/MyProjectExtended}

и если всплывающее окно консоли раздражает, вы можете отключить его на вкладке «Параметры сборки»

...