Programing

이 활동에는 이미 창 장식에서 제공하는 작업 표시 줄이 있습니다.

lottogame 2020. 2. 15. 19:33
반응형

이 활동에는 이미 창 장식에서 제공하는 작업 표시 줄이 있습니다.


Toolbar작업 표시 줄 대신 사용할 물건을 옮기려고 하지만 오류 메시지가 계속 나타납니다.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tyczj.weddingalbum/com.xxx.xxx.MainActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5039)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
            at android.support.v7.app.ActionBarActivityDelegateBase.setSupportActionBar(ActionBarActivityDelegateBase.java:165)
            at android.support.v7.app.ActionBarActivity.setSupportActionBar(ActionBarActivity.java:92)
            at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:113)
            at android.app.Activity.performCreate(Activity.java:5104)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5039)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)

그런 다음 내 활동에 작업 표시 줄이 없도록 스타일을 추가했습니다.

<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:windowActionBar">false</item>
</style>

테마는 내 매니페스트의 활동에 적용됩니다.

<activity
        android:name=".MainActivity"
        android:windowSoftInputMode="adjustResize|stateHidden"
        android:theme="@style/AppCompatTheme" android:screenOrientation="portrait"/>

MainActivity는 GooglePlayServiceActivity를 확장하므로 테마도 설정했습니다.

<activity
       android:name=".GooglePlayServicesActivity"
       android:label="@string/title_activity_google_play_services"
       android:theme="@style/AppCompatTheme">

하지만 여전히 오류가 발생합니다. 또한 어디서나 창 기능을 요청하지 않습니다. 왜 내가 여전히 이것을 얻는 지 아는 아이디어가 있습니까?


Android Lollipop을 개발하고 있다고 생각하지만 어쨌든이 줄을 포함하십시오.

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

내부의 테마 선언에 app/src/main/res/values/styles.xml.

또한 AppCompatActivity버전 22.1 이상의 지원 라이브러리를 사용 하는 경우 다음 행을 추가하십시오.

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

이러한 모든 추가 후에 테마 선언이 다음과 같이 보일 수 있습니다.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

또 다른 쉬운 방법은 테마를 다음 Theme.AppCompat.Light.NoActionBar과 같은 자식으로 만드는 것입니다 .

<style name="NoActionBarTheme" parent="Theme.AppCompat.Light.NoActionBar">
     ...
</style>

한 줄을 추가 android:theme="@style/AppTheme.NoActionBar"activityAndroidManifest작업이 완료했습니다.


AndroidManifest.xml :

<activity android:name=".activity.YourActivity"
          android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE -->

styles.xml

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

툴바를 작업 표시 줄로 사용하려면 먼저 장식 제공 작업 표시 줄을 비활성화하십시오.

가장 쉬운 방법은 테마를 확장하는 것입니다

Theme.AppCompat.NoActionBar

(또는 가벼운 변형).

둘째, 일반적으로 레이아웃 XML을 통해 툴바 인스턴스를 만듭니다.

<android.support.v7.widget.Toolbar
    android:id=”@+id/my_awesome_toolbar”
    android:layout_height=”wrap_content”
    android:layout_width=”match_parent”
    android:minHeight=”?attr/actionBarSize”
    android:background=”?attr/colorPrimary” />

그런 다음 활동 또는 조각에서 툴바를 작업 표시 줄로 설정하십시오.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.blah);

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

이 코드는 나를 위해 일했습니다.


일부 활동을 조치 표시 줄과 결합하고 다른 활동을 결합하지 않으려면, 기본 테마에 조치 표시 줄이 사용 가능하도록 설정 한 후 조치 표시 줄이 필요없는 활동에 사용할 하위 테마를 작성해야합니다.

예를 들어 다음과 같은 하위 스타일을 사용할 수 있습니다

             <style name="AppTheme.NoActionBar">
               <item name="windowActionBar">false</item>
               <item name="windowNoTitle">true</item>
            </style>

기본 테마가 확장되는 동안

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

그런 다음 활동 태그 내의 AndroidManifest 파일에서 액션 바가 아닌 테마를 사용하십시오.

   <activity
        android:name="com.example.NonActionBarActivity"
        android:theme="@style/AppTheme.NoActionBar"

작업 표시 줄이 필요없는 각 개별 활동에이 작업을 적용해야합니다. 따라서 프로젝트에서 작업 표시 줄 활동이 아닌 것보다 적은 작업 표시 줄 활동이 필요한 경우이를 기본 테마 레벨에 적용하는 것이 좋습니다


나는 또한 같은 문제에 직면했다. 그러나 나는 다음을 사용했다.

getSupportActionBar().hide();

전에

setContentView(R.layout.activity_main);

이제 작동합니다.

그리고 Style.xml 에서 다른 옵션을 시도해 볼 수 있습니다 .

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

values ​​/ styles.xml에 이것을 추가하십시오

<style name="YourCustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>

<style name="AppBaseTheme" parent="YourCustomTheme">

</style>

<style name="AppTheme" parent="AppBaseTheme">

</style>

그리고 values-v11 / styles.xml 및 values-v14 / styles.xml에 다음 코드를 추가하십시오.

<style name="AppBaseTheme" parent="YourCustomTheme">

</style>

그게 다야. 작동합니다.


당신은 변경해야합니다

  <activity
        android:name=".YOUR ACTIVITY"
        android:theme="@style/AppTheme.NoActionBar" />
</application>`

이 줄은 매니페스트에서 완벽하게 작동합니다.


프로젝트의 'style.xml'로 이동하여 windowActionBar를 false로 설정하십시오.

<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:windowActionBar">false</item>
</style>

style.xml에있는 앱 테마에이 두 줄을 추가하십시오.

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    //Add this two line will fix your problem
    <item name="windowNoTitle">true</item>   <--1(this applies after 22.0.1 support library i think 
    <item name="windowActionBar">true</item> <--2


내 XML에 툴바가 추가되었습니다. 그런 다음 내 활동 에서이 진술을 추가했습니다.

setSupportActionBar(toolbar);

이것을 제거하면 나를 위해 일했습니다. 누군가에게 도움이되기를 바랍니다.


이 줄에 오류가 발생하면 :

setSupportActionBar(...);

활동이 도구 모음이 포함 된 테마를 참조하는지 확인해야합니다. 애플리케이션의 AppTheme에 이미 다음과 같은 툴바가 포함되어있을 수 있습니다.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

그리고 당신은 두 번째 것을 추가하려고합니다. 애플리케이션의 AppTheme를 사용하려면 manifest.xml 파일에서 활동에서 테마를 제거해야합니다.

예를 들면 다음과 같습니다.

<activity
    android:name=".ui.activities.SettingsActivity"
    android:theme="@style/AppTheme1" /> --> remove this theme

Appcompact활동을 사용하는 경우 테마에서이 세 줄을 사용하십시오.

<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowActionBarOverlay">false</item>

간단히 말해 다음을 수행 할 수 있습니다.

if (android.os.Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark));

    }

이것이 내가 문제를 해결 한 방법입니다. 아래 코드를 추가하십시오AndroidMainfest.xml

<activity android:name=".YourClass"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
 </activity>

매니페스트의 응용 프로그램 태그 또는 활동 태그 내에서 이것을 사용하십시오.

android : theme = "@ style / AppTheme.NoActionBar"


두 가지 간단하고 빠른 솔루션이 있습니다

입술-> 값-> 스타일로 이동

더 쉽게이 비디오를 볼 수도 있습니다. 여기를 클릭하십시오.

해결책 1 :

교체하여 작업 표시 줄을 제거 할 수 있습니다

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

해결책 2 :

이 라인을 추가하기 만하면됩니다

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

이제 스타일 파일은 다음과 같습니다

`

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

</style>

`


이 줄을 제거하여 해결했습니다.

android:theme="@style/Theme.MyCompatTheme"

의 활동 속성에서 Manifest file


parent="Theme.AppCompat.NoActionBar"style.xml 파일에 넣으 십시오.

처럼 - <style parent="Theme.AppCompat.NoActionBar" name="AppTheme.NoActionBar">

참고 URL : https://stackoverflow.com/questions/26515058/this-activity-already-has-an-action-bar-supplied-by-the-window-decor



반응형