当我在非root包中使用资源时,为什么必须导入R类?

san*_*one 3 android

每当我想在非root包中使用任何资源元素时,我必须导入我自己的R class(不是Android R类).例如,

根包com.example.test和文件Main.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
Run Code Online (Sandbox Code Playgroud)

无需导入R class.

当我创建另一个包,com.example.test.something并在那里创建一个新类时Something.java,我必须导入我自己的包R.class

import com.example.test.R;

//...other code...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
Run Code Online (Sandbox Code Playgroud)

当我将Java文件从root移动到非root包时,会自动发生这种情况.

为什么这个这么重要?

Phi*_*art 8

您的R班级存在于您的应用程序包中com.example.test- 查看它的包声明.如果要从任何其他包引用它,则需要导入它或完全限定其名称,就像任何其他类一样.