1

我有一个带有布局和一些按钮的活动,我想更改这些按钮的颜色。但是还有更多按钮,所以我想使用其他类中定义的方法来更改它们。这可能吗?我尝试创建一个扩展当前类的新类。但它正在被强制关闭。

public class Color_change extends Calculate
{
    public  void test()
    {
        Button button = (Button)findViewById(R.id.one);
        button.setTextColor(0xFFFF0000);
    }
}

Calculate是一个扩展的主类Activity。我打电话如下:

Color_change a = new Color_change();
a.test();
4

2 回答 2

2

将按钮传递给测试方法或将上下文传递给构造函数类,然后您可以更改颜色。像

public class ColorChange extends Calculate {
   public static void test(Button button) {
      button.setTextColor(0xFFFF0000);
   }
}

还要注意类名的更改以遵循约定。

于 2011-09-20T15:10:48.303 回答
2

如果屏幕上显示的当前 Activity 不是 Color_change,则您编写的代码将不起作用。如果您想要一个单独的类来更改一组按钮的颜色,我建议将按钮以某种形式的集合传递给更改按钮颜色的类。你可以写一个这样的类:

public class ColorChanger
{
  public void changeColor(Collection<Button> buttons)
  {
    for(Button b : buttons) {
       changeButtonColor(b);
    }
  }

  private void changeButtonColor(Button button) {
       switch(button.getId()) {
           case R.id.one:
                button.setTextColor(0xFFFF0000); 
                break;
           default: 
                // set default color?
                break;
       }
  }
}

然后你只需要列出你需要传递给换色器的所有按钮。

List<Button> buttons = new ArrayList<Button>();
buttons.add((Button)findViewById(R.id.one));
//add any more buttons

请注意,Android 中的主题和样式允许您完成大量此类效果。我敢肯定,在转向代码解决方案之前,您已经竭尽全力了。

于 2011-09-20T15:16:38.420 回答