やりたいこと
MainActivityの記述を減らして見やすくするために、oncreate内でbackgroundcolorを設定する記述を、別に用意したjavaファイルに移して呼び出したいと考えています。
具体的には
public class MainActivity extends AppCompatActivity {
Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); Set set = new Set(); set.color(); }
}
public class Set extends MainActivity {
void color(){ button.setBackgroundColor(Color.RED); }
}
とするとNullPointerExceptionのエラーが出ます。
しかし、
public class MainActivity extends AppCompatActivity {
Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); Set set = new Set(); set.color(button); }
}
public class Set extends MainActivity {
void color(Button bt){ bt.setBackgroundColor(Color.RED); }
}
とすると、希望通りに動きます。
しかし、ボタン1つの色を設定するだけならばいいのですが、例えばactivity_main.xmlにボタンが100個あって、そのボタンの色をそれぞれoncreate内にて指定したい場合、自作のcolor()メソッドの引数が100こ必要になってきてしまいます。
どうにかして、MainActivityのoncreate内では
set.color();
といったような引数なしの簡潔な方法で記述できる方法はないでしょうか?
Layoutinflaterを使ったらいいのかとも考えたのですが、勉強不足でこの場合どう使ったらいいのかよくわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/15 12:05
2016/11/15 13:31
2016/11/15 14:28
2016/11/15 14:57
2016/11/19 00:51