我有很多代码用于1个按钮。有没有办法缩短这段代码。
pic1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
pic1.setTag("beck");
if (pic2.getTag()==("beck")){
new CountDownTimer(500,500) {
public void onTick(long millisUntilFinished) {}
public void onFinish() {
player=MediaPlayer.create(MainActivity.this,R.raw.correct);
player.start();
pic1.setVisibility(View.INVISIBLE);
pic2.setVisibility(View.INVISIBLE);
}}.start();
}
if (pic1.getTag()==("beck")){pic1.setBackgroundResource(R.drawable.becks);}
if (pic3.getTag()==("rob") || pic4.getTag()==("rob")
||pic5.getTag()==("shan") || pic6.getTag()==("shan")
||pic7.getTag()==("mel") || pic8.getTag()==("mel")
||pic9.getTag()==("dumm") || pic10.getTag()==("dumm")
||pic11.getTag()==("jboot") || pic12.getTag()==("jboot") ) {
pic1.setTag ("boot");pic1.setBackgroundResource(R.drawable.jordboots);
pic2.setTag ("boot");pic2.setBackgroundResource(R.drawable.jordboots);
pic3.setTag ("boot");pic3.setBackgroundResource(R.drawable.jordboots);
pic4.setTag ("boot");pic4.setBackgroundResource(R.drawable.jordboots);
pic5.setTag ("boot");pic5.setBackgroundResource(R.drawable.jordboots);
pic6.setTag ("boot");pic6.setBackgroundResource(R.drawable.jordboots);
pic7.setTag ("boot");pic7.setBackgroundResource(R.drawable.jordboots);
pic8.setTag ("boot");pic8.setBackgroundResource(R.drawable.jordboots);
pic9.setTag ("boot");pic9.setBackgroundResource(R.drawable.jordboots);
pic10.setTag ("boot");pic10.setBackgroundResource(R.drawable.jordboots);
pic11.setTag ("boot");pic11.setBackgroundResource(R.drawable.jordboots);
pic12.setTag ("boot");pic12.setBackgroundResource(R.drawable.jordboots); }
}});
例如,创建第二个类来保存代码,以便我可以在需要时调用它。或诸如
之类的方法pic1,pic2,pic3.setTag("boot")
我已经创建了第二个类,并将Tag和Background重置为它。
public class resetbuttons extends MainActivity{
public void buttreset () {
pic1.setTag("boot");
pic1.setBackgroundResource(R.drawable.jordboots);
pic2.setTag("boot");
pic2.setBackgroundResource(R.drawable.jordboots);
// etc etc for 12 buttons }}
代替if语句Tag和图像代码我已经把它。
resetbuttons parent = new resetbuttons();
parent.buttreset();
所有代码看起来都很干净但是当我在调用buttreset时运行它时应用程序崩溃了。我是否需要向清单或xml代码添加任何内容。如果不是我的错误在哪里。这是我想在我的主要活动中摆脱的主要代码
答案 0 :(得分:1)
使用for-loop
的数组/集合一次又一次地执行相同的操作:
View[] views = {pic1, pic2, pic3, pic4, pic5, pic6, pic7, pic8, pic9, pic10, pic11, pic12};
for(View v : views){
v.setTag("boot");
v.setBackgroundResource(R.drawable.jordboots);
}
此外,如果您想比较==
对象,则需要将所有equals()
更改为String
。
答案 1 :(得分:0)
嗯,首先,你可以替换它:
pic1.setTag ("boot");pic1.setBackgroundResource(R.drawable.jordboots);
pic2.setTag ("boot");pic2.setBackgroundResource(R.drawable.jordboots);
pic3.setTag ("boot");pic3.setBackgroundResource(R.drawable.jordboots);
pic4.setTag ("boot");pic4.setBackgroundResource(R.drawable.jordboots);
pic5.setTag ("boot");pic5.setBackgroundResource(R.drawable.jordboots);
pic6.setTag ("boot");pic6.setBackgroundResource(R.drawable.jordboots);
pic7.setTag ("boot");pic7.setBackgroundResource(R.drawable.jordboots);
pic8.setTag ("boot");pic8.setBackgroundResource(R.drawable.jordboots);
pic9.setTag ("boot");pic9.setBackgroundResource(R.drawable.jordboots);
pic10.setTag ("boot");pic10.setBackgroundResource(R.drawable.jordboots);
pic11.setTag ("boot");pic11.setBackgroundResource(R.drawable.jordboots);
pic12.setTag ("boot");pic12.setBackgroundResource(R.drawable.jordboots);
用这个
for (int i = 0;i < pic.length;i++)
{
pic[i].setTag("boot");
pic[i].setBackgroundResource(R.drawable.jordboots);
}
但要做到这一点,你需要将pic变量正确地变成一个数组。我不知道它们是什么类,也不知道你需要多少,所以我不能告诉你如何声明数组。我只能这样说:
*NAME OF CLASS*[] pic = new *NAME OF CLASS* [*NUMBER OF THINGS*]();
另外,请务必初始化阵列。祝你好运!
答案 2 :(得分:0)
您可以使用例如Guava
的{{1}}并将“允许”的字符串放在那里:
ImmutableList
然后运行每张图片,只需检查该值是否在该列表中:
private static final ImmutableList<String> listOfAllowedStrings =
ImmutableList<String>.of("beck", "rob", "shan"); //...etc.