Не может комбинировать пользовательские заголовки с другими функциями заголовка

Я получаю эту ошибку при вызове setContentView() после

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.maintitlebar);

Код находится в onCreate() для моего класса, который расширяет ListActivity. В моем манифестном файле XML показан AppTheme по умолчанию для приложения:

     android:theme="@style/AppTheme"

Я обновил styles.xml, чтобы быть:

<resources>
   <style name="AppTheme" parent="android:Theme.Light" >
    <item name="android:windowNoTitle">true</item>
   </style>   
</resources>

Кажется, что это соответствует основным сообщениям об этом сообщении об ошибке. Я также очистил сборку, но я все еще получаю сообщение об ошибке выше. Кто-нибудь знает, что вызывает столкновение?

Ответ 1

У меня была аналогичная проблема, которая сводила меня с ума: у меня есть 2 версии одного и того же приложения, которые используют проект общей библиотеки в качестве общего кода (более 95% каждого приложения составлено из этого проекта совместно используемой библиотеки): One работает отлично, без каких-либо проблем. Другая ошибка начинается с того же сообщения об ошибке и симптомов, которые вы описываете:

Вы не можете комбинировать собственные заголовки с другими функциями заголовка

XML файлы макета также распространены! Итак, я не мог найти объяснения этой странной проблемы.

После многого мозгового штурма между мной и мной я обнаружил, что единственное различие между этими двумя приложениями состоит в том, что тот, который работает отлично, имеет это в своем AndroidManifest.xml:

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7" />

И тот, который вылетает, имеет это в своем AndroidManifest.xml:

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="13" />

Итак, вы видите, пользовательский интерфейс Android рекламируется как инфраструктура пользовательского интерфейса 4-го поколения, в которой пользовательский интерфейс является декларативным и независимым, но в конце дня все равно s t: Разработка в C (например) для Microsoft Windows больше не требует много времени, чем для разработки на Java для Android, поскольку инфраструктура разработки Android полна таких как наземные мины, в которых компилятор ничего не скажет вам во время компиляции, и исключенное вами исключение не скажет вам. Вместо этого вам нужно полагаться на ** удачу, обнаружив этот небольшой фрагмент документации (который может или не может существовать), предоставляя вам подсказку о том, где искать основную причину проблемы.

Я надеюсь, что эта информация будет полезна многим, кто испытывает ту же проблему.

Ответ 2

вы должны использовать <item name="android:windowNoTitle">false</item> в пользовательской теме

Ответ 3

У меня такая же проблема, и вот что это сработало для меня:

AndroidManifest.xml

< application
   ...
   ...
   android:theme="@style/CustomTheme" >

styles.xml

< style name="CustomTheme" parent="android:Theme">
< /style>

MainActivity.java

1) super.onCreate(savedInstanceState);

2) requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

3) setContentView(R.layout.activity_main);

4) getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title1);

Порядок кодов важен, как показано выше.

Если у вас есть:

1) requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

2) setContentView(R.layout.activity_main);

3) super.onCreate(savedInstanceState);

4) getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title1);

Вы получите это исключение:

android.view.InflateException: двоичная строка XML файла # 37: ошибка раздувания фрагмента класса

Ответ 4

Неважно, какую родительскую тему вы используете:

Если я использую parent="android:Theme", то android:windowNoTitle="false" работает (согласно ответу @Vladimir).

Однако, если я использую parent="android:Theme.Holo.Light", тогда мне нужно использовать android:windowActionBar="false" (согласно комментарию @Jasper). Здесь мой рабочий xml с использованием темы Holo Light:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.ScheduleTimes" parent="android:Theme.Holo.Light">
        <item name="android:windowActionBar">false</item>
    </style>
</resources>

Ответ 5

Возможно, этот вопрос до сих пор уже решен, но я отправляю этот ответ тем, у кого эта ошибка... У меня была очень похожая проблема, и изменение файла манифеста не сработало вообще, но что он работал у меня, перешел на сценарии gradle и перешел в build.gradle(Module: app) в этом файле, я изменил minSdkVersion и targetSdkVersion с тем же самым в обоих из них в этом случае, например, 7, и приложение работает правильно!

Ответ 6

У меня такая же проблема. Я загрузил приложение под названием BlueToothChat. Таким образом, я добавляю следующий код в файл string.mxl в папке значений:

<resources>
    <style name="CustomTheme" parent="@android:Theme">
    <item name="android:windowNoTitle">false</item>
</style>

<string name="app_name">Bluetooth Chat</string>
...

а затем добавьте: {Theme = "@style/CustomTheme"} на главную страницу активности (BluetoothChat.cs):

namespace BluetoothChat
{
    /// <summary>
    /// This is the main Activity that displays the current chat session.
    /// </summary>
[Activity (Label = "@string/app_name", MainLauncher = true,
       Theme = "@style/CustomTheme", ConfigurationChanges
       Android.Content.PM.ConfigChanges.KeyboardHidden |
       Android.Content.PM.ConfigChanges.Orientation)]
    public class BluetoothChat : Activity

Тем не менее, я не тестировал вариации этой процедуры или не определял какие-либо реальные атрибуты CustomTheme.