【问题标题】:parse color VS parse int解析颜色 VS 解析 int
【发布时间】:2014-08-31 08:37:50
【问题描述】:

随机更改背景颜色时遇到问题:
首先,我尝试在 Colorclass 中使用 parseColor:

public class Colors {

       public String[] colors = {
            "#39add1", // light blue
            "#3079ab", // dark blue
            "#c25975" // mauve
       };

       public int getcolor() {
          Random randomGenerator = new Random();
          String color = "";

          int randomNumber = randomGenerator.nextInt(3);

          color = colors[randomNumber];
          int colorAsInt = Color.parseColor(color);
          return colorAsInt;
      }
} 

在 Activity 类中:

View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
              int color = mColors.getcolor();
              relativeLayout.setBackgroundColor(color);
        }
};

完美运行:
但是当我尝试使用 String 作为 getcolor 的返回类型并在活动类中使用 parse int 时,当我运行应用程序时,它给了我一个错误:不幸的是应用程序已停止。

颜色类:

public String getcolor() {
    Random randomGenerator = new Random();
    String color = "";

    int randomNumber = randomGenerator.nextInt(3);

    color = colors[randomNumber];
    return color;
}

还有活动类:

 View.OnClickListener listener = new View.OnClickListener() {
         @Override
         public void onClick(View view) {
               String color = mColors.getcolor();
               relativeLayout.setBackgroundColor(Integer.parseInt(color));
        }
 };

为什么会出现这个问题?

【问题讨论】:

标签: java android parseint


【解决方案1】:

Integer.parseInt(color) 无法解析字符串,因为它不是整数字符串"#39add1"
你必须像第一个函数一样使用Color.parseColor(color)

relativeLayout.setBackgroundColor(Color.parseColor(color));

【讨论】:

  • 什么是整数字符串?
  • 只包含“123”和“12.34”等数字的字符串
【解决方案2】:

将颜色定义更改为

public int[] colors = {
    0x39add1, // light blue
    0x3079ab, // dark blue
    0xc25975 // mauve
};

并使用

setBackgroundColor(colors[0]);

【讨论】:

  • int color和string color有什么特别的区别吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 2016-05-16
  • 2017-12-30
相关资源
最近更新 更多