我的游戏有一个金/银/铜奖励门槛。游戏保存在SharedPreferences文件中获得的奖励,其中键是级别号。所以在我的关卡选择屏幕上,我有20个关卡。我的代码如下所示:
private void initButtons() {
Button b1 = ((Button) findViewById(R.id.b1));
load = getSharedPreferences(Game.DATA, Game.GOLD);
if(load.getInt(Integer.toString(1), 0) == 4){
b1.setBackgroundDrawable(getResources().getDrawable(
R.drawable.gold));
b1.setText("1");
b1.setTextSize(30);
b1.setOnClickListener(this);
}
((Button) findViewById(R.id.b2)).setOnClickListener(this);
((Button) findViewById(R.id.b3)).setOnClickListener(this);
((Button) findViewById(R.id.b4)).setOnClickListener(this);
((Button) findViewById(R.id.b5)).setOnClickListener(this);
((Button) findViewById(R.id.b6)).setOnClickListener(this);
((Button) findViewById(R.id.b7)).setOnClickListener(this);
((Button) findViewById(R.id.b8)).setOnClickListener(this);
((Button) findViewById(R.id.b9)).setOnClickListener(this);
((Button) findViewById(R.id.b10)).setOnClickListener(this);
((Button) findViewById(R.id.b11)).setOnClickListener(this);
((Button) findViewById(R.id.b12)).setOnClickListener(this);
((Button) findViewById(R.id.b13)).setOnClickListener(this);
((Button) findViewById(R.id.b14)).setOnClickListener(this);
((Button) findViewById(R.id.b15)).setOnClickListener(this);
((Button) findViewById(R.id.b16)).setOnClickListener(this);
((Button) findViewById(R.id.b17)).setOnClickListener(this);
((Button) findViewById(R.id.b18)).setOnClickListener(this);
((Button) findViewById(R.id.b19)).setOnClickListener(this);
((Button) findViewById(R.id.b20)).setOnClickListener(this);
}
所以我需要3 if if else语句为每个按钮。这似乎很多。以上代码是否有效或我应该使用其他方法吗?
感谢您的帮助 安迪
答案 0 :(得分:3)
private static int[] button_id{R.id.b1,R.id.b2.....};
private void initButtons() {
for(int i=0;i<button_id.length;i++){
Button ONE_OF_YOUR_BUTTON=getButton(button_id[i]);
ONE_OF_YOUR_BUTTON.doStuffToIt();
}
}
}
private static Button getButton(int id){
return (Button)findViewById(id));
}
}
您可以随时循环播放。这些问题属于Code Review