簡體   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