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]);
}
});
}
}
该intger中存储的值是什么?
答案 0 :(得分:1)
R.drawable.image存储一个将返回int的资源ID。
答案 1 :(得分:1)
R.drawable.image表示可绘制资源,在本例中为image。 Drawable意味着可以绘制的图形。每个drawable都存储在res / drawable文件夹中。你的ballArray是一系列drawables。
答案 2 :(得分:1)
您的Drawables数据类型不是int;你对它的引用是一个int,你可以在R.java中看到。
final int[] ballArray =
{R.drawable.ball1,
R.drawable.ball2,
R.drawable.ball3,
R.drawable.ball4,
R.drawable.ball5};
所以这里你只存储参考。
答案 3 :(得分:1)
你可能真的不需要知道R.drawable.ball5
的实际值,因为它是在构建期间确定的......但我不会再猜测你的问题 - {{1的实际值可以在构建期间创建的构建文件夹中的文件R.drawable.ball5
中找到。
要在Android Studio中找到它,在完成构建后,您可以右键单击编辑器中的R.java
,然后转到 - >实现,您将看到生成的R.drawable.ball5
文件以及为此构建分配给此资源的编号。它看起来像:
R.Java
以编程方式,您只需记录public static final int ball5=0x7f080093;
。
这就是你问的问题的答案。但我认为你最好看Integer.toString(R.drawable.ball5)
例如明确命名资源或通过名称“ball5”引用drawable并用该变量名称引用它。您不应该真正关心R.id.ball5
实际上是什么值,因为它可能会随着您添加或删除其他资源而发生变化。
这样的事情可能会更好,因为我可以猜到你想要做什么:
R.drawable.ball5
如果您想使用支持旧API的方法获取drawable,请尝试:
public void onClick(View v) {
Random randomNumberGenerator = new Random();
int number = randomNumberGenerator.nextInt(5);
ballDisplay.setImageDrawable(this,
getDrawable(ballArray[number]));
}
答案 4 :(得分:0)
没有必要知道它返回的值是什么,因为你已经知道如何访问它,而且,你最初无法知道它,因为这个值是在构建时确定的,所有你在开始时都知道的是它是十六进制的数字 如果您想在构建完成后知道,请转到R.java文件,您将找到它。