안드로이드 에러]
This Activity already has an action bar supplied by
the window decor.
안녕하세요.
오늘은 안드로이드 에러 사항에 대해서 간단히 언급을 해보도록 하겠습니다.
평소에 조금씩 안드로이드 앱을 개발하고 있는데요.
JLPT N4 ~ N1까지의 어플을 다 개발하고 다른 앱을 개발하려고 하다가 오류를 발견했습니다.
오류 제목은?!
This Activity already has an action bar supplied by the window decor.
Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
오류 제목이 너무 길지만 그래도 제목이 필요하므로 이렇게 올리도록 하겠습니다.
그럼 이제 해당 오류 사항부터 한번 보시도록 하겠습니다.
일단 사진상으로는 한번 올려드리긴 했는데
확대가 필요하신 분들은 클릭을 하시면 크게 보실 수 있을 겁니다.
원래는 평소에 계속 저작권 마크를 해놨는데.
해당 에러사항은 확대를 할 수도 있는 분들이 좀 계실 수도 있을 것 같아서 서명 마크를 하지 않았습니다.
그리고 본문으로 한번 보시도록 할게요.
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.heung.dday, PID: 8792 java.lang.RuntimeException: Unable to start activity ComponentInfo{패키지명.MainActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6944) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead. at android.support.v7.app.AppCompatDelegateImpl.setSupportActionBar(AppCompatDelegateImpl.java:345) at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:130) at com.heung.dday.MainActivity.onCreate(MainActivity.java:26) at android.app.Activity.performCreate(Activity.java:7183) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6944) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) Application terminated.
|
일단 대략적인 에러는 이렇습니다.
자 이제 여기서 어디에서 에러가 표기가 되는지 알아야되잖아요?!
일단 그러면 빨간색 표기 부분만 보시면 됩니다.
자 일단 제가 개발을 하면서 발생한 에러는 이거입니다. 그전에 개발을 하던 앱들에는
네비게이션바를 특별히 사용하지 않았고, 엑션바도 특별히 사용을 안했는데요.
그러다가 이번에 개발하는 앱에서는 한번 사용을 하면 좋겠다.
그런 생각이 들어서 사용을 하고 빌드를 하다가 발생한 에러입니다.
간단히 설명을 일단 드리도록 하겠습니다. 해당 에러사항은
기본 액션바가 지정된 상태에서 툴바를 액션바로 사용할 때 발생하는 에러인데요.
즉?! 무슨소리냐.
기존의 툴바를 액션바 즉, 기능이 있는 Bar로 만들기 위해서는
기존의 기본 파를 비활성화시켜야하는데요.
다시 말하면 디폴트 액션바를 비활성화 시켜야 합니다.
그리고 제가 빨간색으로 표기한 부분을 영어를 잘 못하시는 분들이라면
구글 번역기에 돌리면 보다 정확한 이유를 알 수 있는데요.
번역기 돌린 화면부터 한번 보시도록 하겠습니다.
에러가 항상 발생되면
일단 제일 먼저 에러가 표기된 것들을 가장 꼼꼼히 읽어주시기 바라겠습니다.
일단 구글번역기 내용에서 나오는것 처럼 매우 간단하게
WindowActionBar를 false로설정하세요. 라고 친절하게 에러가 알려주고 있습니다.
그럼 이건 어디서 적용을 할까요?!
styles.xml에서 화살표 표기된 2줄만 추가를 해주시면 됩니다.
그럼 자동적으로 오류가 발생되지 않으며, 구글 번역기 돌린 에러사항의 메시지처럼
false만 지정해둔 부분입니다. 일단 복사를 하실 수도 있으니까.
<!--title delete--> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> |
여기에 나오는 빨간색 2줄만 넣어주시면 됩니다.
그러면 자동적으로 에러가 없어지는 것을 보실 수 있을 겁니다.
일단 이상으로 오늘은 매우 간단한 액션바, 툴바 관련된 에러사항에 대해서 포스팅을 해봤습니다.
그럼 모두들 개발 열심히 하세요!!!!! 아!!!
혹시 해당사항으로 오류가 해결 안되면 댓글 남겨주세요.
확인해보고 다른 방법 있으면 알려드리도록 하겠습니다.