본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] contextmenu 관련 함수들

by 돼지왕 왕돼지 2013. 7. 7.
반응형


 android context menu 관련 함수들

 


[android] contextmenu 관련 함수들


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 에 대한 정보를 얻어 올 수 있다.



반응형

댓글0