添加库项目时,我在 android R.java 行为中对我的问题进行了一些研究
我观察到,当一个库项目添加到任何 android 项目时,都会创建两个 R.java 文件。
项目.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));
}
}
库活动:
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);
}
}