【问题标题】:Feature Custom Title: Cannot combine custom titles on API 11 and above功能自定义标题:无法在 API 11 及更高版本上组合自定义标题
【发布时间】:2012-08-30 02:32:33
【问题描述】:

我有一个我设置的项目:

  • minSdkversion 设置为 10
  • MainActivity 是一个 TabActivity

onCreate 方法中的代码是这样的:

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
...

使用以前的设置,一切正常!但是,如果我将 minSdkVersion 设置为 11 或更高,则会发生此异常:

android.util.AndroidRuntimeException: You cannot combine custom titles with other title features

我不明白为什么这只是更改 minSdkVersion。 我在这个网站上对这个问题很感兴趣。我试过设置:

  • 主布局中的 Theme.NoTitleBar 以及 Manifest 文件中的之后
  • 我将这 3 行放在所有可能的位置
  • 如果我在我的 CustomTitle 布局的 TextView 引用上调用某些内容时,在第一行注释 NullPointerException 会发生
  • 我尝试在 theme.xml 文件声明中设置 "windowNoTitle" = true

由于我仅使用 API 11 提供的功能,因此我想在将 App 加载到 Store 之前将 minSdk 设置为 11。我能怎么做 ??我需要帮助

编辑:在 Manifest 中使用 minSdkVersion = 10 和 Theme.NoTitleBar 时,会发生同样的错误。删除它,一切都像以前一样。 当 API 为 11 或更高版本时,任何人都可以提供用于设置自定义标题的工作代码(清单和活动代码)吗?非常感谢

【问题讨论】:

  • 使用很少使用的标签几乎没有用处,例如除标签android 之外的任何标签值都不会被任何人遵循。没有人回答的原因大概是因为你试图做与错误提示完全相反的事情。

标签: android tabactivity titlebar android-tabactivity custom-titlebar


【解决方案1】:

@kinghomer 实际上我已经在 2.2 (API 8) 上尝试过 CUSTOM_TITLE。让我试试 API 11 并回复您!

在此之前,您无需在任何地方制作 Theme.NoTitleBar,可以直接在 .java 文件中进行控制。给我一点时间,我会回来的!

【讨论】:

  • 什么?我的代码有效还是你的?你能发布你的测试代码吗?
  • 难以置信!我修复它!我只是在清单文件中每个活动的声明中添加“主题”属性(之前没有)。
  • 我试过了。仍然坚持同样的问题。但是,只有当我尝试在我的 GB 手机上运行它时才会发生这种情况。 (在模拟器上运行良好)我支持 API 级别 8-17。
【解决方案2】:

由我自己修复。我不知道为什么,只是在清单文件中为每个活动的声明添加“主题”属性,一切正常:

从这里:

<activity
        android:name=".CheckActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
</activity>

到这里:

<activity
        android:name=".CheckActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme" >
</activity>

【讨论】:

  • 这对我有用。我刚刚将 android:theme="@andriod:style/Theme" 添加到我的活动中并且它有效。就我而言,这是我的蓝牙活动!
【解决方案3】:

res/values-v11 默认使用这段代码:

<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        <!-- API 11 theme customizations can go here. -->
</style>

把“android:Theme.Holo.Light”改成“@android:style/Theme”就可以了!

提示:如果你的项目没有“res/values-v11”,那么检查你的项目引用的“lib project”。

【讨论】:

    【解决方案4】:

    除了接受的答案,还有另一种方法可以解决这个问题:

    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/CustomTheme" >
    

    在基于 xml 的 mainifest 中为 application 分配一个 theme 属性,这应该适用于所有活动。

    【讨论】:

      【解决方案5】:

      当您尝试添加自定义标题栏并通过ActionBarActivityAppcomActivity 扩展您的活动时会出现此问题。这两个活动类已经定义了标题栏。 因此,当您尝试添加自己的自定义标题栏时,会出现冲突,使用哪个标题栏 - 您的自定义标题栏或扩展活动提供的标题栏。

      要解决此问题,只需将您的活动扩展为Activity,它没有任何预定义的标题栏,因此您的活动将被接受而不会发生任何冲突。

      public void MyActivy extends Activity
      {
      
          // your code
      
      }
      

      【讨论】:

        【解决方案6】:

        我刚刚在activity 文件中的activity 中添加了android:theme="@android:style/Theme",它工作得非常好。

        <activity
                android:name=".MainActivity"
                android:theme="@android:style/Theme" >
        </activity>
        

        希望这也适用于您。

        【讨论】:

          【解决方案7】:

          在您的 AndroidManifest 文件中,使用这个 sn-p 而不是您的。

          从这里:

          android:theme="@style/AppTheme">
          

          到这里:

          android:theme="@style/custom_title">
          

          【讨论】:

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