【问题标题】:cannot combine custom titles with other title features无法将自定义标题与其他标题功能结合使用
【发布时间】:2012-11-02 14:35:26
【问题描述】:

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

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

【问题讨论】:

标签: android


【解决方案1】:

我有一个类似的问题让我发疯:我有两个版本的同一个应用程序使用共享库项目作为它们的公共代码(每个应用程序的 95% 以上都是由该共享库项目组成的):一个运行良好,没有任何问题。其他崩溃在启动时出现您描述的相同错误消息和症状:

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 被吹捧为第 4 代 UI 框架,其中 UI 是声明性的和独立的主题,但归根结底,它都是一样的 st: Developing在C(例如)中为 Microsoft Windows 开发并不比在 Java 中为 Android 开发更耗时,因为 Android 开发框架充满了这样的地雷,其中编译器不会告诉你任何事情 在编译时,抛出的异常也不会告诉你。相反,您必须依靠 **luck 找到少量的文档(可能存在也可能不存在),为您提供a hint 以了解在哪里寻找问题的根本原因。

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

【讨论】:

  • 我遇到了同样的问题,但没有找到任何解决方案。我应该怎么做? (我是通过添加这个 android:theme="@android:style/Theme" 来做到的)
  • 我认为这里的问题是与 Android 的一些主题(如 Holo)冲突,这些主题仅在最近的 sdks 中使用。正确的解决方案是禁用此主题设置父样式,例如android:Theme(就像在 user2618844 的帖子中一样)。
  • 将此添加到自定义样式解决了问题:false
【解决方案2】:

你应该使用 &lt;item name="android:windowNoTitle"&gt;false&lt;/item&gt; 在您的自定义主题中

【讨论】:

  • 您能否解释一下为什么这会有所帮助?
  • FEATURE_CUSTOM_TITLE 和 FEATURE_NO_TITLE 是互斥的,如果您想在主题中使用自定义标题,则需要禁用 FEATURE_NO_TITLE
  • 谢谢弗拉基米尔。如果您愿意,您还可以在以后编辑您的帖子。
【解决方案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: Binary XML file line #37: Error inflating class fragment

【讨论】:

  • 此更改消除了错误并显示了我的自定义窗口标题,但也大大改变了我应用程序其余部分的外观。
【解决方案4】:

您使用哪个父主题很重要:

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

但是,如果我使用parent="android:Theme.Holo.Light",那么我需要使用android:windowActionBar="false"(根据@Jasper 的评论)。这是我使用 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>

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

      我遇到了同样的问题。我下载了一个名为 BlueToothChat 的应用程序。 因此,我将以下代码添加到 value 文件夹中的 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 属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多