[안드로이드] 메뉴 아이템 인텐트

반응형




이어지는 글
메뉴 생성         
컨텍스트 메뉴     
XML로 메뉴 정의하기   
메뉴의 특성
메뉴 아이템 인텐트       ◀ 현재 위치

읽기전에 손가락 한번 클릭~ >_<

고마워요 ~ Chu ~ ♥


메뉴의 마지막인 아이템 인텐트에 대한 내용입니다.



메뉴 아이템 인텐트

인텐트(Intent)는 기본적으로 어플리케이션들이 서로 연결되고, 정보를 공유하고, 태스크를 같이 사용하는 등에 사용되어 집니다.

메뉴에서도 다른 액티비티를 시작시키기 위해 인텐트를 이용할 수 있습니다.

총 두가지의 방법이 있는데요,
◈ 인텐트를 정의한 후 메뉴 아이템에 할당하기.
인텐트를 정의한 후 안드로이드 시스템이 디바이스에서 검색하여, 인텐트 규격에 맞는 것들을 메뉴 아이템에 동적으로 추가시키게 만들기.



메뉴 아이템에 인텐트 설정하기

새로운 액티비티를 표시하는 메뉴 아이템을 만들고자 한다면 setIntent() 메소드로 해당 메뉴 아이템에 대한 인텐트를 직접적으로 지정해야 됩니다.




예를들어, onCreateOptionsMenu() 에서 인텐트를 가지는 새로운 메뉴 아이템을 만들 수 있지요.


이제 아이템이 선택될 때, 자동으로 액티비티를 표시해 줄 것입니다.



동적으로 인텐트 추가하기


동적으로 다른것들을 실행하는 메뉴아이템을 추가하고자 할때 사용하는 방식입니다.
메뉴를 생성할때 onCreate...() 등의 메소드에서 Intent.CATEGORY_ALTERNATIVE 및 MIME 타입 등의 새로운 액티비티를 오픈하기 위한 인텐트 필터를 채웁니다.





그런 다음 요구조건에 맞는 서비스를 검색하도록 addIntentOptions() 메소드를 호출하고, 그것을 메뉴에 추가하면 되지요.



만약, 여기에서 해당 인텐트를 만족하는 어플리케이션이 없다면, 메뉴 아이템도 추가되지 않습니다.

Intent.SELECTED_ALTERNATIVE 는 현재 선택된 엘리먼트만을 처리하기 때문에 옵션메뉴가 오픈될 때 항상 호출되는 onCreateContextMenu() 또는 onPrepareOptionsMenu() 에서 메뉴를 만들때에만 사용되어야 하겠습니다.





이제 정의된 인텐트와 일치하는 인텐트 필터를 가진 액티비티가 검색되어 메뉴에 추가될 것입니다.
메뉴 아이템 텍스트는 그 액티비티 인텐트 필터의 android:label 값이 표시됩니다.
addIntentOptions() 메소드는 추가된 메뉴 아이템의 개수를 리턴하는데요, 이 메소드가 호출 될때, 첫번째 인자로 넣은 '그룹' 의 모든 메뉴 아이템들이 오버라이드 됩니다.

또한 다른 어플리케이션의 메뉴에 직접 만든 액티비티를 제공하려면, 인텐트 필터만 정의하면 되겠습니다. 즉, 인텐트 필터에 있는 <category> 엘리먼트의 name 속성에 ALTERNATIVE 또는 SELECTED_ALTERNATIVE 값을 포함하면 되지요.







이제 메뉴에 관한 내용은 간략하지만, 끝이 났습니다.
다음엔 다이얼로그에 대해 포스팅 해볼까 합니다 ^^




관련글





반응형

댓글

Designed by JB FACTORY