繁体   English   中英

如何将数组的值传递给另一个类?

[英]How do I pass the value of an array to another class?

我正在尝试将另一个类中的颜色的数组值传递给Android Studio中的FunFactsActivity。 现在,我遇到一个错误
setBackgroundColor(int) in View cannot be applied to (java.lang.String). relativeLayout.setBackgroundColor(mColorWheel.mColors[currentColor]);

据我了解,我无法将int传递给它,因为它是String,但是我只是想使该数组中已有的颜色每隔几秒/间隔就淡入线程中的relativeLayout背景,并且无法做到正确。 我究竟做错了什么?

FunFactsActivity.java

// update background color of relativeLayout every few seconds.
private void updateColor()
{
    final RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
    int color = mColorWheel.getColor();
    runOnUiThread(new Runnable()
    {

        @Override
        public void run()
        {

            if (currentColor > mColorWheel.mColors.length - 1)
            {
                currentColor = 0;

            }
            relativeLayout.setBackgroundColor(mColorWheel.mColors[currentColor]);

            currentColor++;

        }// end of run
    });

}

ColorWheel.java

public class ColorWheel {

    // Member variable (properties about the object)
    public String[] mColors = {
            "#39add1",
            "#3079ab",
            "#c25975",
            "#e15258",
            "#f9845b",
            "#838cc7",
            "#7d669e",
            "#53bbb4",
            "#e0ab18",
            "#637a91",
            "#f092b0",
            "#b7c0c7",
            "#FAEBD7",
            "#00FFFF",
            "#7FFFD4",
            "#0000FF",
            "#8A2BE2",
            "#A52A2A",
            "#DEB887",
            "#5F9EA0",
            "#7FFF00",
            "#D2691E",
            "#6495ED",
            "#DC143C",
            "#B8860B",
            "#A9A9A9",
            "#006400",
            "#FF8C00",
            "#8B0000",
            "#FFD700",
            "#FF69B4",
            "#4B0082",
            "#F08080",
            "#90EE90",
            "#87CEFA",
            "#FF4500",
            "#DA70D6",
            "#FA8072",
            "#9ACD32",
            "#00FF7F",
            "#4682B4",
    };

    // Method (abilities: things the object can do)
    public int getColor(){

        String color = "";
        // Randomly select a fact
        Random randomGenerator = new Random(); // Construct a new Random number generator
        int randomNumber = randomGenerator.nextInt(mColors.length);

        color = mColors[randomNumber];
        int colorAsInt = Color.parseColor(color);

        return colorAsInt;
    }
}

您的ColorWheel类已经在getColor函数中调用Color.parseColor 只需使用该功能,因为它已经获得了随机的颜色。

relativeLayout.setBackgroundColor(mColorWheel.getColor());

或者,如果您想使用mColors数组:

relativeLayout.setBackgroundColor(Color.parseColor(mColorWheel.mColors[currentColor]));

没有遍历整个代码,但是在Android中设置颜色时,您可以:

  • 提供一个引用颜色ID的int ,例如: R.color.my_red
  • 提供一个Color对象。 在您的情况下,如果要将十六进制值转换为Color ,请调用Color.parseColor("#000000")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM