32. YAPP Advanced Android Study .
<activity
android:name="yapp.aa.android.MainActivity_"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android:name=”....MainActivity” 에서
MainActivity_ 언더바 붙이기
13년 7월 26일 금요일
33. YAPP Advanced Android Study .
Android Annotations 라이브러리는
어노테이션을 Compile 시에 처리하기 때문
※ Annotation Processing Tool
@EActivity
MainActivity
APT
컴파일 시 APT가 @ 처리
MainActivity_
생성
13년 7월 26일 금요일
34. YAPP Advanced Android Study .
즉, 진짜 사용하는 MainActivity가 아닌
MainActivity_
Intent intent = new Intent(OtherActivity.this, MainActivity_.class);
startActivity(intent);
13년 7월 26일 금요일
35. YAPP Advanced Android Study .
@ViewById
• findViewById 역할
• @ViewById
- id와 멤버 변수 이름이 같을 때
• @ViewById(R.id.xxx)
- id와 멤버 변수 이름이 다를 때
명시적으로 지정
13년 7월 26일 금요일
36. YAPP Advanced Android Study .
btnGreetings = (Button)findViewById(R.id.btnGreetings);
@ViewById
Button btnGreetings; // 인사 버튼
멤버 변수 정의 위에 @ViewById
13년 7월 26일 금요일
37. YAPP Advanced Android Study .
@AfterViews
• @ViewById를 통해 바인딩 한 후에
뷰에 추가 작업이 필요할 때
• @EActivity를 함께 쓰는 경우
onCreate 메서드가 호출 될 시점에는
@ViewById에 대한 처리가 되기 전이므로
NullPointerException이 발생
• 다른 어노테이션이 모두 처리된 후
가장 마지막에 수행됨
13년 7월 26일 금요일
38. YAPP Advanced Android Study .
@AfterViews
void changeButtonText() {
btnGreetings.setText("인사하기");
}
@AfterViews 를 통해
버튼의 레이블 변경
13년 7월 26일 금요일
39. YAPP Advanced Android Study .
@Click
• View.setOnClickListener() 역할
• 메서드 이름과 멤버 변수의 이름이 같을 때
@Click
• 또는 명시적으로 지정
@Click(R.id.xxx)
• 메서드에 적용하는 어노테이션
• 메서드는 private 이어서는 안됨
13년 7월 26일 금요일
40. YAPP Advanced Android Study .
// 뷰에 클릭 이벤트 리스너 설정
btnGreetings.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
// 토스트 메시지 뿌리기
Toast.makeText(MainActivity.this,
"안녕!?",
Toast.LENGTH_SHORT).show();
}
});
@Click
void btnGreetings() {
Toast.makeText(MainActivity.this,
"안녕!?",
Toast.LENGTH_SHORT).show();
}
13년 7월 26일 금요일
41. YAPP Advanced Android Study .
@LongClick도...
@LongClick(R.id.btnGreetings)
void longGreetings() {
Toast.makeText(MainActivity.this,
"안~~~~~~~~~녕!?",
Toast.LENGTH_SHORT).show();
}
void btnGreetings는 메서드 이름이 중복되므로
void longGreetings 로 하고,
@LongClick(R.id.btnGreetings) 로 작성
13년 7월 26일 금요일
42. YAPP Advanced Android Study .
onCreate 메서드가 할일은 더 이상 없으니
@EActivity 가 수행하므로
onCreate 삭제
13년 7월 26일 금요일
43. YAPP Advanced Android Study .
@EActivity
public class MainActivity extends Activity {
@ViewById
Button btnGreetings; // 인사 버튼
@AfterViews
void changeButtonText() {
btnGreetings.setText("인사하기");
}
@Click
void btnGreetings() {
Toast.makeText(MainActivity.this, "안녕!?", Toast.LENGTH_SHORT).show();
}
@LongClick(R.id.btnGreetings)
void longGreetings() {
Toast.makeText(MainActivity.this, "안~~~~~~~~~녕!?", Toast.LENGTH_SHORT).show();
}
}
13년 7월 26일 금요일
44. YAPP Advanced Android Study .
Android Annotations 라이브러리를 배워봤습니다.
그렇다면 지금 해야할 일은 뭘까요?
13년 7월 26일 금요일