Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:当许多包使用R.java时出错_Java_Android_Android Manifest_Package_Android Resources - Fatal编程技术网

Android:当许多包使用R.java时出错

Android:当许多包使用R.java时出错,java,android,android-manifest,package,android-resources,Java,Android,Android Manifest,Package,Android Resources,我有两个包,例如,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时,我必须更改a

我有两个包,例如,
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清单文件
,将默认包从
com.packageA
更改为
com.packageB
,这样classA将注意到上面一行的错误。我倒车时也是一样

那么,我如何解决这个问题:使用多个包,其中许多包使用
资源数据
。请帮帮我


谢谢:)

如果您的清单中指定的包是
com.packageA
,那么在packageA的文件中,您无需执行任何操作。在
packageB
的文件中,使用
import com.packageA.R而不更改清单中的包名称。这样,您的packageB就可以访问R.java文件。

如果清单中指定的包是
com.packageA
,那么在packageA的文件中,您不需要做任何事情。在
packageB
的文件中,使用
import com.packageA.R而不更改清单中的包名称。这样,您的packageB就可以访问R.java文件。

您不需要在清单文件中提及您的所有包。只需声明类A包并运行程序。但是,请确保将类B的包导入到调用它的java类中。默认情况下,清单文件声明了创建新android项目时提到的第一个包


让我知道如果这解决了您的问题

您不需要在清单文件中提及您的所有包。只需声明类A包并运行程序。但是,请确保将类B的包导入到调用它的java类中。默认情况下,清单文件声明了创建新android项目时提到的第一个包


让我知道这是否解决了您的问题

我也遇到了同样的问题,因为我将一个项目转移到另一个具有不同资源的项目,并且因为我使用的是scala(2.8.3)和treeshaker,这些插件不允许我正确使用android库项目

我用ant添加了一个自定义构建步骤,在我想要的包中创建了一个R.java的副本,从而解决了这个问题

我在项目MyProjectExtended的根目录中添加了一个名为
custom_rules.xml
的文件,其中包含以下内容:

<?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>

正在从资源生成R.java/Manifest.java。。。
然后我添加了自定义构建步骤:

  • 在项目上单击鼠标右键,然后单击“属性”
  • 在“生成器”上,单击“新建…”
  • 选择“Ant Builder”,继续
  • 对于构建文件
    ${workspace\u loc:/MyProjectExtended/custom\u rules.xml}
  • 基本目录:
    ${workspace\u loc:/MyProjectExtended}

如果控制台弹出窗口很烦人,您可以在名为“构建选项”的选项卡中禁用它。

我也遇到了同样的问题,因为我用不同的资源将一个项目转移到另一个项目,并且因为我使用的是scala(2.8.3)和treeshaker,这些插件不允许我正确使用android库项目

我用ant添加了一个自定义构建步骤,在我想要的包中创建了一个R.java的副本,从而解决了这个问题

我在项目MyProjectExtended的根目录中添加了一个名为
custom_rules.xml
的文件,其中包含以下内容:

<?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>

正在从资源生成R.java/Manifest.java。。。
然后我添加了自定义构建步骤:

  • 在项目上单击鼠标右键,然后单击“属性”
  • 在“生成器”上,单击“新建…”
  • 选择“Ant Builder”,继续
  • 对于构建文件
    ${workspace\u loc:/MyProjectExtended/custom\u rules.xml}
  • 基本目录:
    ${workspace\u loc:/MyProjectExtended}

如果控制台弹出窗口令人讨厌,您可以在名为“构建选项”的选项卡中禁用它。

Oh。谢谢:)它解决了我的错误。但我的问题仍然让我头疼:(例如,在
packageA
中,我有很多类。现在,我想首先在
packageB
上运行,所以在
android manifest
中,我使用
com.packageB
,并且必须更改
packageA
中的每个类(糟糕!!!)。您能帮助我吗?根据安装的SDK工具的版本,您可以通过右键单击项目并转到Android子菜单来更改软件包名称。Android工具将更新对该软件包的大部分或所有引用,从而减少您需要手动更改的数量。噢。谢谢:)它解决了我的错误。但我的问题仍然让我头疼:(例如,在
packageA
中,我有很多类。现在,我想首先在
packageB
上运行,所以在
android manifest
中,我使用
com.packageB
,并且必须更改
packageA
中的每个类(糟糕!!!)。您能帮助我吗?根据安装的SDK工具的版本,您可以通过右键单击项目并转到Android子菜单来更改软件包名称。Android工具将更新对该软件包的大部分或所有引用,减少您需要手动更改的数量。哦。谢谢,这对我有帮助:)但我继续遇到问题。例如,在
packageA
中,我有许多类。现在,我想首先在
packageB
上运行,所以在
android manifest
中,我使用
com.packageB
,并且必须更改
packageA
中的每个类(糟糕!!!)。你能帮我吗?哦。谢谢,这对我有帮助:)但我还是遇到了问题。例如