何时将R.layout ...转换为整数

问题描述:

不是生死攸关的紧急事件,只是一个好奇的问题。 我有两个布局文件 布局/ some_xml_file 布局大/ some_xml_file何时将R.layout ...转换为整数

当我打电话的setContentView(R.layout.some_xml_file),该 “R.layout.some_xml_file” 传递给的setContentView为int。

我的问题是....当R.layout.some_xml_file转换为int。 a - 程序启动时?所以只要程序运行,它是一个常量 - 或 - b - 每次调用setContentView()语句时?

查找到R.java文件在您的gen文件夹那里你可以看到你的布局转换为int

+0

AHh所以这变得更加混乱。它在生成过程中转换为int,但是 - layout/some_xml_file和 - layout-large/some_xml_file都由相同的int值引用,并决定从哪个文件夹(layout或layout-large)中选择是在运行期间? –

+0

yah它是android层次结构,如果你在'layout','layout-large','layout-land','layout-large-land'中编写相同的布局,它们将由'R.java'文件中的相同ID生成,这是android给出的功能,可以在不同的屏幕尺寸和位置上使用不同的布局,以获取更多信息,您可以阅读本文http://developer.android.com/guide/practices/screens_support.html#ConfigurationExamples –

+0

特别感谢指向网络文档 - 乔 –

当你调用的setContentView(INT),您实际上并不传递一个布局的整数形式。你实际上是在告诉它在项目本地资源的哪个位置去解码你指定的视图。

至于什么时候生成:当使用像Eclipse这样的程序时,无论何时生成项目,都会生成R文件中的资源ID。在该环境之外,您可以从您的资源生成文件using aapt

aapt package --non-constant-id -f -m -M <abs_path_to_AndroidManifest.xml> 
    -S <abs_path_to_res_dir> -I <abs_path_to_platforms_android.jar> 
    -J <abs_path_to_dir_that_should_contain_gen_R_java) 
    --generate-dependencies