2014년 4월 2일 수요일

2014년 4월 1일 화요일

안드로이드 ADT 14에서 달라진 부분..



현재 많은 개발자들이 아래와 같은 코드를 사용하고 있다.


int id = view.getId();
switch (id) {
    case R.id.button1:
        action1();
        break;
    case R.id.button2:
        action2();
        break;
    case R.id.button3:
        action3();
        break;

}

리소스의 id를 switch 문에 사용하는 것인데..
이것을 ADT 14 부터는 모두 if~else 구조로 변경해야한다.

이유는 다음과 같다.

----------------------------------
In a regular Android project, constants in the resource R class are declared like this:
public static final int main=0x7f030004;

However, as of ADT 14, in a library project, they will be declared like this:
public static int main=0x7f030004;

----------------------------------

즉, R.java 생성 시 기존에는 final 이던 상수가 final이 아닌 변수로 컴파일 되기 때문이다.

다행히도 이클립스에서는 switch 문을 if~else 구조로 변경할 수 있는 기능이 제공된다.

Ctrl + 1 을 눌러서... Convert swtich to if-else 를 선택하면 된다.