在AndroidStudio中,当我使用空活动创建项目时,我在MainActivity.java文件中获得以下代码:
package my.company.my_proj;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Run Code Online (Sandbox Code Playgroud)
其中使用了一个名为神秘的类R.这堂课的目的是R什么?
hac*_*bod 106
R是一个包含特定应用程序包的所有资源的定义的类.它位于应用程序包的命名空间中.
例如,如果您在清单中说明了包名com.foo.bar,R则会生成一个包含所有资源符号的类com.foo.bar.R.
通常有两个 R课程要处理
android.R和它之所以被命名R是因为它代表了R esources,并且没有必要让人们输入更长的东西,特别是因为在它之后最终会有相当长的符号名称,这会导致相当多的换行符.
tjb*_*tjb 21
什么是R: 关于R,没有什么是非常神秘的.它只是一个有很多静态子类的类,在eclipse中打开并查看(在gen /下).
该类的每个成员都是以下两种情况之一:1)静态最终类或2)静态最终整数,它们对于其他类的成员是唯一的.
为什么它如此神秘: 它容易混淆,因为R是由蚂蚁自动生成的.它是神秘的,因为你不应该手动"触摸"它(当然你可以,但你的更改将在重新生成时自动删除).它另外神秘,因为有时eclipse会自动导入androids标准R文件(如上面的答案所述)
为什么它始终是第一个无法解决的问题: R完全遵循Java类和包的规则,R对于输入的行为方式没有什么特别之处.R将自动放置在清单文件中的包条目指定的包中
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="package.which.will.contain.R.and.probably.the.main.package.in.the.application" android:versionName="8.6.2011" android:versionCode="1">
<uses-sdk android:minSdkVersion="13" />
Run Code Online (Sandbox Code Playgroud)
要查看R文件所属的包,只需打开eclipse中的gen /文件夹(包视图).您将看到其中列出的一个包,它将具有您在清单中指定的名称.尝试删除它,如果所有资源都遵循正确的命名规则,并且所有xml文件都遵循正确的xml规则,并且在eclipse中启用了自动构建,则会返回.
理解R文件的关键是要意识到它与其他类在同一个包中,即使它与属于你的"main"包的其他文件位于不同的目录中.了解了这一点并理解资源文件的语法和命名后,可以轻松解决R问题.
小智 6
Android R.java 是 AAPT(Android 资源打包工具)自动生成的文件,其中包含 res/目录下所有资源的资源 ID。如果您在activity_main.xml 文件中创建任何组件,则相应组件的id 会自动在此文件中创建。该 ID 可在活动源文件中使用,以对组件执行任何操作。
| 归档时间: |
|
| 查看次数: |
37212 次 |
| 最近记录: |