android context menu 관련 함수들 |
ListView 의 item 을 long press 했을 때, ( android 에서는 long click 이라 부름 )
pop up menu 가 뜨도록 하여 수정과 삭제를 하고자 했다.
그래서 사용한 것이 context menu.
요놈 관련해서 여러가지 함수를 사용했는데, 정리해두면 좋을 것 같아 공유하고자 한다.
ViewGroup.showContextMenuForChild( View );
요 녀석은 v 로 전달되는 자식 view 에 해당하는 context menu 를 띄우라는 명령어이다.
이 녀석은 ViewGroup 의 함수로, v 는 view group 의 자식이어야 한다.
Activity.openContextMenu( View );
요 녀석은 전달되는 view 에 해당하는 context menu 를 띄우라는 명령어이다.
이 녀석은 위의 녀석과는 성격이 조금 다른데, 위의 녀석이 자식에 해당하는 것이라면, 이 녀석은 그냥 부모객체 또는 단일객체에 대한 context menu open 을 담당한다.
이 함수는 Activity의 함수로 Activity 에 등록된 view 에 한정되며,
해당 view 는 registerForContextMenu 를 통해 등록이 되어 있어야 사용 가능하다.
View.showContextMenu()
위의 함수와 대동소이한 녀석으로, 해당 view 에 직접 context menu 를 띄우라고 명령!
Activity.registerForContextMenu( View );
Activity 단위에서 context menu 를 관리하기 위해서, context menu 를 연결시킬 view 를 연결시키는 함수.
이 녀석을 통해 context menu 가 등록되어 있어야 openContextMenu( view ) 함수도 사용할 수 있고,
Activity 의 onCreateContextMenu 나 onContextItemSelected 함수를 이용할 수 있다.
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add( Menu.NONE, MENU_ID_MODIFY, MENU_ID_MODIFY, R.string.modify );
menu.add( Menu.NONE, MENU_ID_DELETE, MENU_ID_DELETE, R.string.delete );
}
Context 메뉴가 생성될 때 불리는 callback 함수로 Activity 함수이다.
View 에 따라 다른 context menu 를 구성할 수도 있다.
public boolean onContextItemSelected(MenuItem item)
@Override
public boolean onContextItemSelected(MenuItem item) {
int itemIndex = getListItemIndex( item );
switch( item.getItemId() ){
case MENU_ID_MODIFY:
modify();
break;
case MENU_ID_DELETE:
delete();
break;
}
return super.onContextItemSelected(item);
}
Context Menu 의 Item 이 선택되었을 때 불리는 callback 함수로 Activity 합수이다.
MenuItem object 를 통해 해당 menu 에 대한 정보를 얻어 올 수 있다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
Eclipse 가용 메모리 조정하기. (0) | 2013.07.08 |
---|---|
[android] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE (0) | 2013.07.08 |
[android] Long Press ( Long Click ) 직접 구현하기 (0) | 2013.07.07 |
[android] 기본 Longpress 진동주기 (0) | 2013.07.04 |
[android] 현재 thread가 main thread 인지 체크하는 방법. (0) | 2013.07.04 |
댓글