public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
{
Intent intent = new Intent();
intent.setClass(this, Menu.class);
startActivity(intent);
}
break;
case R.id.records:
Intent intent = new Intent();
intent.setClass(this, RecordList.class);
startActivity(intent);
break;
}
}
В обработке первой кнопки есть фигурные скобки, хотел бы понять как они в данном случае работают. Если их убрать, то будет жалоба на то, что два одинаковых названия intent, пусть даже стоит оператор break. Если я вдруг напишу такой код, что первая кнопка не будет переходить по созданному интенту и у меня будет возможность кликнуть и по второй кнопке, то что-то нехорошее произойдет.
Ответ
{ ... } в данном случае - это просто (анонимный) блок кода. И сделано это, видимо, только для того, чтобы не было конфликта имён переменных.
В этом ответе говорится, что использование таких блоков - это зачастую признак плохо написанного кода. Утверждение, конечно, можно считать спорным, но конкретно в этом случае создание Intent-а, а также вызовы методов setClass и startActivity можно вынести из switch-а, оставив в case-ах только выбор класса:
Class clazz = null;
switch (v.getId())
{
case R.id.start:
clazz = Menu.class;
break;
case R.id.records:
clazz = RecordList.class;
break;
}
if (clazz != null)
{
Intent intent = new Intent();
intent.setClass(this, clazz);
startActivity(intent);
}
Комментариев нет:
Отправить комментарий