Android 에서 Fragment 를 이용해 Tab Bar 를 만들었는데 오류가 발생하여 질문드립니다.


public class MainActivity extends AppCompatActivity {
    Toolbar toolbar;
    Fragment fragment1;
    Fragment fragment2;
    Fragment fragment3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toolbar = (Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayShowTitleEnabled(false);

        //...
    }
}

형식으로 MainActivity.java 속에 코딩을 했습니다. 빌드를 하면 'setSupportActionBar()' 에서 에러가 발생하는데 왜 이렇게 오류가 발생하는지 모르겠습니다.

오류 원인의 로그는 이렇게 나타납니다.

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.


조회수 153


1 답변


좋아요
1
싫어요
채택취소하기

기본 액션바가 지정된 상태에서 툴바를 액션바로 사용할 때 발생하는 에러입니다. 따라서 툴바를 액션바로 사용하기 위해서는 디폴트 액션바를 비활성화 시켜야 합니다. 가장 간단한 방법은 해당 액티비티 테마를 styles.xml 파일을 통해서 Theme.AppCompat.NoActionBar를 상속받게 하는 것입니다.

또는 액티비티 테마 속성에 다음을 추가하시기 바랍니다.

<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>

  • 후자의 방법으로 /values/styles.xml 파일에 AppTheme 라는 스타일 태그 안에 아이템 태그 2개를 넣었는데 아무래도 지원하지 않는 듯 합니다. 제가 잘못하고 있는 것 같은데 전자의 방법을 하려면 android:theme="@style/ThemeOverlay.AppCompat.Dark" 부분을 수정하면 되는건가요?    Kim Minwoo   2016.9.8 01:50     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close