我正在使用以下开关案例来处理不同的按钮,并在每种情况下启动一个活动。
我想知道 - 我应该将Intent对象(i)移到外面 - 可能作为私有类属性并重新使用它?或者,我应该将每个案例包装在括号中,以便我可以重新使用名称“i”而不添加唯一名称吗?哪个更安全/更好?重新使用同一个对象有风险吗?
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button_numbers:
Intent i = new Intent(v.getContext(), DrillActivity.class);
i.putExtra("word_list", R.raw.wl_numbers);
startActivity(i);
break;
case R.id.button_colors:
Intent i2 = new Intent(v.getContext(), DrillActivity.class);
i2.putExtra("word_list", R.raw.wl_colors);
startActivity(i2);
break;
case R.id.button_daysmonths:
Intent i3 = new Intent(v.getContext(), DrillActivity.class);
i3.putExtra("word_list", R.raw.wl_daysmonths);
startActivity(i3);
break;
default:
break;
}
}
答案 0 :(得分:4)
我会这样做:
@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(), DrillActivity.class);
switch (v.getId()){
case R.id.button_numbers:
i.putExtra("word_list", R.raw.wl_numbers);
break;
case R.id.button_colors:
i.putExtra("word_list", R.raw.wl_colors);
break;
case R.id.button_daysmonths:
i.putExtra("word_list", R.raw.wl_daysmonths);
break;
default: return;
}
startActivity(i);
}
我认为它更清楚。
答案 1 :(得分:2)
您可以重复使用该变量。它将成为新对象的新参考。
case R.id.button_numbers:
Intent i = new Intent(v.getContext(), DrillActivity.class);
i.putExtra("word_list", R.raw.wl_numbers);
startActivity(i);
break;
case R.id.button_colors:
i = new Intent(v.getContext(), DrillActivity.class);
i.putExtra("word_list", R.raw.wl_colors);
startActivity(i);
break;
case R.id.button_daysmonths:
i = new Intent(v.getContext(), DrillActivity.class);
i.putExtra("word_list", R.raw.wl_daysmonths);
startActivity(i);
break;
default:
break;
虽然小费, 由于所有情况都与您调用相同的活动相同,并且您所做的就是为额外的值添加不同的值,我建议您执行以下操作:
int wordListValue;
switch ...
case R.id.button_numbers:
wordListValue = R.raw.wl_numbers;
break;
case R.id.button_colors:
wordListValue = R.raw.wl_colors;
break;
case R.id.button_daysmonths:
wordListValue = R.raw.wl_daysmonths;
break;
default:
return;
}
Intent i = new Intent(v.getContext(), DrillActivity.class);
i.putExtra("word_list", wordListValue);
startActivity(i);