Java R.drawable.image返回什么?
该整数中存储的值是什么?Java R.drawable.image返回什么?,java,android,Java,Android,该整数中存储的值是什么?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView ballDisplay = (ImageView)findViewById(R.id.image_eightBall);
final int[] ballArray = {R.drawable.ball1,
R.drawable.ball2,
R.drawable.ball3,
R.drawable.ball4,
R.drawable.ball5};//*******What integer is that???????????
Button myButon = (Button)findViewById(R.id.askButton);
myButon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Random randomNumberGenerator = new Random();
int number = randomNumberGenerator.nextInt(5);
ballDisplay.setImageResource(ballArray[number]);
}
});
}
}
所以这里您只存储引用 您可能不需要知道R.drawable.ball5的实际值,因为它是在构建过程中确定的。。。。但是我不会再猜你的问题了——R.drawable.ball5的实际值可以在构建期间创建的构建文件夹中的文件R.java中找到 要在Android Studio中找到它,在完成构建后,您可以在编辑器中右键单击R.drawable.ball5,然后转到->实现,您将看到生成的R.Java文件以及为此构建分配给此资源的编号。它看起来像:
final int[] ballArray =
{R.drawable.ball1,
R.drawable.ball2,
R.drawable.ball3,
R.drawable.ball4,
R.drawable.ball5};
通过编程,您可以只记录Integer.toStringR.drawable.ball5
这就是你问的问题的答案。但是我认为您最好看看R.id.ball5,例如显式地命名资源,或者使用名称ball5引用可绘制文件,并使用该变量名引用它。您不应该真正关心R.drawable.ball5的实际值,因为它可能会随着您添加或删除其他资源而改变
如果我能猜出你想做什么,这样的事情可能会更好:
public static final int ball5=0x7f080093;
如果要使用支持旧API的方法获取可绘制的,请尝试:
public void onClick(View v) {
Random randomNumberGenerator = new Random();
int number = randomNumberGenerator.nextInt(5);
ballDisplay.setImageDrawable(this,
getDrawable(ballArray[number]));
}
不需要知道它返回什么值,因为您已经知道如何访问它,并且,您最初无法知道它,因为该值是在构建期间确定的,您在开始时只能知道它是一个十六进制的数字
但是,如果您想在构建完成后知道,请转到R.java文件,您会在那里找到它。阅读关于@+id的内容为什么您如此关心id值的了解?我后来意识到这个问题与此无关。我再也不需要这些信息了。
ballDisplay.setImageDrawable(
this.getResources()
.getDrawable(ballArray[number]);