Удаление заголовка в Android не работает

#android

#Android

Вопрос:

Мой AndroidManifest.xml выглядит так:

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="example.com.kamera">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:supportsRtl="true"
    android:theme="@android:style/Theme.Black.NoTitleBar">
    <activity
        android:name=".FullscreenActivity"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>
  

и моя полноэкранная активность выглядит так:

 public class FullscreenActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_fullscreen);
}

}
  

У вас есть какие-либо идеи, почему мое приложение выходит из строя? Я просто хочу удалить строку заголовка, ярлык, в основном все.

Журнал сбоев:

 E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: example.com.kamera, PID: 23069
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{example.com.kamera/example.com.kamera.FullscreenActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2484)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544)
                      at android.app.ActivityThread.access$900(ActivityThread.java:150)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:168)
                      at android.app.ActivityThread.main(ActivityThread.java:5845)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
                   Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                      at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:351)
                      at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:320)
                      at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:281)
                      at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
                      at example.com.kamera.FullscreenActivity.onCreate(FullscreenActivity.java:22)
                      at android.app.Activity.performCreate(Activity.java:6248)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544) 
                      at android.app.ActivityThread.access$900(ActivityThread.java:150) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:168) 
                      at android.app.ActivityThread.main(ActivityThread.java:5845) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687 

Мой styles.xml выглядит так:

 <resources>

    <!-- 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>
    </style>

    <style name="FullscreenTheme" parent="AppTheme">
        <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="android:windowBackground">@null</item>
        <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
        <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
    </style>

    <style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
        <item name="android:background">@color/black_overlay</item>
    </style>
</resources>
  

Какой из этих макетов я должен вызвать? android:theme="???"

Комментарии:

1. написать callstack

2. добавьте свой журнал сбоев

3. Я обновил вопрос

4. @mafioso при использовании AppCompatActivity необходимо использовать темы AppCompat. смотрите ответ ниже

5. в AndroidManifest.xml тег приложения помещает android:theme="@style/AppTheme" и удаляет атрибут android: theme из тега activity

Ответ №1:

Попробуйте это в вашем методе onCreate

 requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_fullscreen); 
  

Ответ №2:

При использовании AppCompatActivity убедитесь, что вы используете тему AppCompat.

Измените тег темы для приложения и удалите его из activity

 android:theme="@style/AppTheme"
  

Теперь, в styles.xml файл создает один стиль

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
</style>
  

Кроме того, в классе Acitvity переместитесь ниже строк перед setContentView()

 requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
  

Комментарии:

1. Что я должен записать в customize your theme here?

2. Да, но все еще есть строка заголовка и т.д., И я хочу это удалить

3. обновите свой вопрос изменениями, которые вы внесли в код до сих пор

Ответ №3:

если другие части верны, проверьте это направление для инициализации

 requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_fullscreen);
        super.onCreate(savedInstanceState);
  

чтобы исправить сбой, используйте это в AndroidManifest.xml файл:
<activity android:theme="@style/Theme.AppCompat" ...

Комментарии:

1. По-прежнему не работает. Я обновил вопрос, теперь вы можете увидеть журнал сбоев

Ответ №4:

Я решил эту проблему, изменив код в styles.xml файле:

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

Измените родительский файл на Theme.AppCompat.NoActionBar , и это сработает!

Комментарии:

1. Если вы поступите подобным образом, то по умолчанию все ваши действия будут без строки ЗАГОЛОВКА