Java R.drawable.image返回什么?

Java R.drawable.image返回什么?,java,android,Java,Android,该整数中存储的值是什么?

该整数中存储的值是什么?

您的drawables数据类型不是int;您对它的引用是一个int,可以在R.java中看到

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]);