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

画面に表示されている現在のアクティビティが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 に答える