Не может комбинировать пользовательские заголовки с другими функциями заголовка
Я получаю эту ошибку при вызове 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
.