13

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

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

4

6 回答 6

32

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

您不能将自定义标题与其他标题功能结合使用

布局 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 是声明性的和独立的主题,但归根结底,它都是一样的:用C开发(例如) Microsoft Windows 的开发并不比 Android 的 Java 开发更耗时,因为 Android 开发框架充满了类似这样的地雷,其中编译器在编译时不会告诉你任何事情,抛出的异常也不会告诉你. 相反,您必须依靠 **luck找到一小段文档(可能存在也可能不存在),从而为您提供有关在哪里寻找问题根本原因的提示。

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

于 2012-12-19T02:32:02.347 回答
22

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

于 2013-03-17T15:47:10.640 回答
13

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

AndroidManifest.xml

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

样式.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

于 2013-07-25T13:57:01.193 回答
2

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

如果我使用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>
于 2015-12-09T11:11:33.950 回答
0

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

于 2018-04-19T07:58:07.677 回答
0

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

于 2016-10-15T21:36:56.797 回答