【问题标题】:android R.java mapping to resource layouts when a library project is added添加库项目时,android R.java 映射到资源布局
【发布时间】:2012-04-17 04:56:42
【问题描述】:

我对我的问题进行了一些研究 android R.java behavior when a library project is added

我观察到当一个库项目添加到任何android项目时,都会创建两个R.java文件。

project.R.java

 public static final class layout {
    public static int capture=0x7f030000;
    public static int main=0x7f030001;
}

lib.R.java

public static final class layout {
    public static final int add=0x7f030000;
    public static final int capture=0x7f030001;
    public static final int main=0x7f030002;
}

并且被设置为库的项目有自己的 R.java,看起来像

 public static final class layout {
    public static int capture=0x7f030000;
    public static int main=0x7f030001;
}

示例库只有一个活动,我从我的应用程序开始,这个活动设置布局主要。 现在,如果我们看到 R.java 中“main”的 id 在我的应用程序和库项目中是不同的。我试图从库中打印 id 的值,并给出 0x7f030002 这是我的应用程序 R.java 文件中的值。

现在,当我将内容设置为 smain 时,我的应用程序没有主布局并且在库中,它从库项目中设置 main.xml! 如果我将主布局添加到我的应用程序项目中,lib 将把这个主布局设置为它的布局!!

即 main 的 id 取自我的应用程序的 R.java,此 id 与库中 main 的 id 不同,但布局是从库中正确选择的。

这是怎么回事 请帮忙

我的应用活动:

import com.idg.test.lib.TestLibActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class TestProjectActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    Log.i("starting","oncraete main id "+ R.layout.main);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add);
    startActivity(new Intent(this,TestLibActivity.class));

}

}

lib 活动:

    import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class TestLibActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i("Library","Library main id" +R.layout.main );
    setContentView(R.layout.main);
}

}

【问题讨论】:

  • 我想我以前见过这种情况。您能否在课程中包含您要导入的内容?
  • 我已将导入添加到我的 que 中。我没有专门导入任何 R.java 文件

标签: android r.java-file


【解决方案1】:

发件人:Android developer site

当您构建依赖于库项目的应用程序时, SDK 工具将库编译成一个临时 JAR 文件并在 主项目,然后使用结果生成 .apk。在案件 其中资源 ID 在应用程序和 库中,工具确保在 应用程序获得优先权,并且库项目中的资源 未编译到应用程序 .apk 中。这使您的应用程序 使用或重新定义任何资源行为的灵活性或 在任何库中定义的值。

希望它能回答你的问题

【讨论】:

  • 非常感谢。这在这里回答了我的问题。你能看看stackoverflow.com/questions/9924684/…。在这里,我遇到了一个真正不同但相关的问题
  • 那么解决办法是什么?
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 2016-08-15
相关资源
最近更新 更多