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

조회수 3546회
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.

  • (•́ ✖ •̀)
    알 수 없는 사용자

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" 부분을 수정하면 되는건가요? 알 수 없는 사용자 2016.9.8 01:50

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)