이 활동에는 이미 창 장식에서 제공하는 작업 표시 줄이 있습니다.
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"
로 activity
에 AndroidManifest
작업이 완료했습니다.
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">
'Programing' 카테고리의 다른 글
가상 환경 내부에서 pip 자체를 어떻게 업데이트합니까? (0) | 2020.02.15 |
---|---|
첫 경기에서 멈출 정규 표현식 (0) | 2020.02.15 |
jQuery : 테이블의 행 수 계산 (0) | 2020.02.15 |
2D 점이 다각형 내에 있는지 어떻게 알 수 있습니까? (0) | 2020.02.15 |
항목 x에 액세스 할 수 있도록 문자열을 어떻게 분할합니까? (0) | 2020.02.14 |