无法将自定义标题与其他标题功能相结合

时间:2012-11-02 14:35:26

标签: android

之后调用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>

这似乎与此错误消息的主要帖子一致。我还清理了构建,但我仍然收到上述错误消息。有谁知道造成冲突的原因是什么?

6 个答案:

答案 0 :(得分:32)

我有一个类似的问题让我疯了:我有两个版本的同一个应用程序使用共享库项目作为他们的公共代码(超过95%的每个应用程序由该共享库项目组成):一个运行良好,没有任何问题。其他崩溃一开始时出现相同的错误消息&amp;你描述的症状:

  

You cannot combine custom titles with other title features

布局XML文件也很常见!所以,我找不到任何解释这个奇怪的问题。

在我,我和我之间进行了很多头脑风暴之后,我发现两个应用程序之间的唯一区别是运行正常的应用程序在 AndroidManifest.xml 中有这个:

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

崩溃的那个在 AndroidManifest.xml 中有这个:

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

所以,你看,Android UI被吹捧为第四代UI框架,其中UI是声明性的并且是独立主题的,但是在一天结束时它们都是相同的 t:开发在C中(例如)用于Microsoft Windows并不比用Java开发Android更耗时,因为Android开发框架中充满了这样的地雷,编译器不会告诉你任何东西< / em>在编译时,抛出的异常也不会告诉你。相反,你必须依靠**运气找到一小段文档(可能存在或可能不存在),为你提供a hint哪里可以找到问题的根本原因。

我希望这些信息对许多遇到同样问题的人有所帮助。

答案 1 :(得分:19)

你应该使用 <item name="android:windowNoTitle">false</item> 在您的自定义主题

答案 2 :(得分:13)

我遇到同样的问题,这对我有用:

<强>的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:错误扩充类片段

答案 3 :(得分:2)

您正在使用哪个父主题:

如果我使用parent="android:Theme",则android:windowNoTitle="false"有效(根据@ Vladimir的回答)。

但是,如果我使用parent="android:Theme.Holo.Light",那么我需要使用android:windowActionBar="false"(根据@Jasper&#39的评论)。这是我使用Holo Light主题的xml工作:

<?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>

答案 4 :(得分:0)

也许到目前为止这个问题已经解决了,但是我发布了这个答案给那些有这个错误的人...我有一个非常类似的问题,并且更改清单文件根本不起作用,但它对我有用的是去gradle脚本并转到此文件中的build.gradle(Module:app),在这种情况下,我更改了minSdkVersion和targetSdkVersion,例如7,该应用程序运行正常!

答案 5 :(得分:0)

我遇到了同样的问题。我下载了一个名为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属性。