< 개발 환경 > < 프로젝트 적용 > |
안드로이드/Android 옵션메뉴(OptionMenu) 사용방법 ~!
안드로이드 옵션메뉴(OptionMenu) 사용방법 입니다.
안드로이드 옵션메뉴(OptionMenu) 자체는 Activity에서 생성 관리고 있습니다. 그렇기 때문에 Activity의 몇몇 메서드를 오버라이드해서 사용하시면 옵션메뉴(OptionMenu)의 생성 및 종료에 대한 콜백 메서드를 활용 할 수 있습니다.
package arabiannight.tistory.com.optionmenu; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View v) { switch (v.getId()) { case R.id.btn_open: // 옵션키를 누르지 않고 강제로 OptionMenu를 열어 준다. // 메뉴키를 누른것과 같은 효과 (호출 -> 종료 -> 호출 -> 종료) openOptionsMenu(); break; case R.id.btn_close: // 옵션키를 누르지 않고 강제로 OptionMenu를 닫아 준다. // 옵션키가 Open 상태일때를 확인하고 종료만 가능하다. (종료만 가능) closeOptionsMenu(); break; default: break; } } /** * Flow * 1) onCreateOptionsMenu() * 2) onPrepareOptionsMenu() * 3) onOptionsItemSelected() * 4) onOptionsMenuClosed() */ /** * OptionMenu가 최초로 생성될 때만 호출 된다. * 그 이후에는 OptionMenu가 화면에 나타날 경우 * onPrepareOptionsMenu()만 호출 된다. * Activity가 onDestory()될 때 OptionMenu도 Destory 된다. */ @Override public boolean onCreateOptionsMenu(Menu menu) { Log.d("OptionMenu", "onCreateOptionsMenu()"); getMenuInflater().inflate(R.menu.activity_main, menu); return true; } /** * 스크린에 맞는 OptionMenu를 화면에 표시하기 위해 준비할 때 호출 된다. * 옵션메뉴가 화면에 나타날 때마다 호출 된다. */ @Override public boolean onPrepareOptionsMenu(Menu menu) { Log.d("OptionMenu", "onPrepareOptionsMenu()"); return super.onPrepareOptionsMenu(menu); } /** * OptionMenu 아이템이 선택될 때 호출 된다. */ @Override public boolean onOptionsItemSelected(MenuItem item) { Log.d("OptionMenu", "onOptionsItemSelected()"); return super.onOptionsItemSelected(item); } /** * OptionMenu가 종료될 때 호출 된다. */ @Override public void onOptionsMenuClosed(Menu menu) { Log.d("OptionMenu", "onOptionsMenuClosed()"); super.onOptionsMenuClosed(menu); } /** * OptionMenu가 강제로 Open될 때 호출 된다. */ @Override public void openOptionsMenu() { Toast.makeText(MainActivity.this, "OptionMenu 강제 호출", Toast.LENGTH_SHORT).show(); super.openOptionsMenu(); } /** * OptionMenu가 강제로 Close될 때 호출 된다. */ @Override public void closeOptionsMenu() { Toast.makeText(MainActivity.this, "OptionMenu 강제 종료", Toast.LENGTH_SHORT).show(); super.closeOptionsMenu(); } }
일단 옵션메뉴는 예제 코드를 통해 사용하시면 됩니다. 생성 및 종료될 때의 함수를 오버라이드 할 수 있기 때문에 콜백 형식으로 사용할 수 있습니다.
주의점!!!! 옵션메뉴 강제호출과, 강제종료 메서드는 정상적으로 동작하지만 한번은 오버라이드 메서드를 사용할 수 있고 다시 클릭시 오버라이드 메서드를 사용할 수 없습니다. 오버라이드 메서드를 사용하기 전에 시스템에서 가로채 가는 듯 합니다. 하지만!!! 동작은 정상적으로 됩니다.
파일첨부 :
스크린샷 :
유용하게 사용하시기 바랍니다.^^
감사합니다.
'Android > 메뉴(Menu)' 카테고리의 다른 글
안드로이드/Android 컨텍스트메뉴(ContextMenu) 포지션(Position) 얻어 오기 ~! (0) | 2013.02.21 |
---|---|
안드로이드/Android 컨텍스트메뉴(ContextMenu) 사용 예제 ~! (0) | 2013.01.17 |
안드로이드/Android 옵션메뉴(OptionMenu) SubMenu 활용 하기~! (7) | 2013.01.16 |
안드로이드/Android 옵션메뉴(OptionMenu) 사용 예제 ~! (0) | 2013.01.16 |