프로그래밍/Java, Android

[Android] 'openOptionsMenu()'가 동작하지 않을 때

당근천국 2015. 8. 13. 15:00

롤리팝에서 메뉴버튼이 사라져서 인터페이스에 메뉴버튼을 넣었습니다.

숨겨진 메뉴를 사용하기 위해서는 'openOptionsMenu()'를 호출하면 됩니다.

 

그런데 안뜰 때가 있네?

 

1. 일반적인 방법

프로젝트를 생성하고 메인엑티비티를 'Blank Activity'로 생성합니다.

버튼을 하나 생성하고 다음 코드를 버튼에 연결합니다.

 

그러고 나서 실행해보면....

 

 

반응이 없습니다!

 

보통은 잘되는데 안될 때가 있습니다.

 

2. 해결방법

이제 'onCreate()'안에 을 다음과 같이 작성합니다.

 

protected void onCreate(Bundle savedInstanceState)
{
    //타이틀바 숨기기
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

 

 

이렇게 코드를 작성하면 타이틀바가 사라지는걸 확인할 수 있습니다.

(참고 : [Android] 풀스크린 사용하기 - 타이트바 없애기)

 

이제 테스트해보면 되는 것을 알 수 있습니다.

(근데 안될 때도 있습니다. 그 이유는 아래서)

 

 

 

 

 

 

3. 다른 방법

위 방법으로 해결되지 않았다면 'openOptionsMenu();'를 사용한 엑티비티의 상속이 'Activity'외에 다른 것일 수 있습니다.

대표적으로 'ActionBarActivity'를 상속받으면 'openOptionsMenu();'가 동작하지 않습니다.

 

다른 엑티비티로 바꾼다면 타이틀바를 없애지 않아도 해결되는 경우도 있다는 것이죠.

거기다 다른 엑티비티에서 열리는 경우도 동작하지 않는 경우가 있는 것 같습니다.

이럴 때는 테스트 프로젝트를 만들어서 테스트해보는 것이 가장 좋을 것 같습니다.

마무리

프로젝트를 기본생성하면 보통 'Activity'로 생성되는데 옵션문제인지 가끔 다른 걸로 생성될 때가 있네요.

이러면 질문을 해봤자 서로 동작이 다르니 답이 없죠 ㅎㅎㅎ

저도 '이 코드 막힌 건가?'하다가 '혹시?' 했는데 해결되는 어이없는 상황이...

 

제가 안드로이드의 구조를 잘못 알고 있다는 생각이 드는 경우입니다.

물론 중간에 프로젝트 타겟버전이나 안드로이드 스튜디오의 버전이 몇번 바뀌면서 프로젝트가 꼬이는 경우도 있긴한데....그래도 그렇지..

ㅜㅡ