这是一个java初学者的问题,但它与Android代码有关。
这是我的MainActivity.java
:
package tld.mydomain.buttonclickcounter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private EditText myEditText;
private Button myButton;
private TextView myTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myEditText = (EditText) findViewById(R.id.myEditText);
myButton = (Button) findViewById(R.id.myButton);
myTextView = (TextView) findViewById(R.id.myTextView);
}
}
如您所见,我使用 R
类而无需导入它。怎么可能?我相信在Java中需要导入所有东西。 java编译器如何知道从哪里获取类?我正在使用Android Studio。
答案 0 :(得分:2)
这是因为您的MainActivity.java
位于包名称内,与AndroidManifest.xml
中声明的包名称相同:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tld.mydomain.buttonclickcounter">
</manifest>
R.java
将根据AndroidManifest.xml
中的包名称生成。因此,如果您使用其他包名称,例如tld.mydomain
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tld.mydomain">
</manifest>
然后您需要使用tld.mydomain.R
导入R.java。
答案 1 :(得分:1)
由于R.java
和MainActivity.java
位于tld.mydomain.buttonclickcounter
包内,因此AndroidManifest.xml
中提及了您的包。要测试R.java
是否在tld.mydomain.buttonclickcounter
包内,您可以反编译您的apk。