草庐IT

android - 在 Android Manifest 中更改主题会导致应用程序崩溃 - 简单的解决方案?

coder 2023-12-26 原文

我在旧版本的 Eclipse 中创建了一些应用程序。这样做时,我会输入:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

在 list 文件中,这总是可以毫无问题地更改应用程序主题。最近,我开始使用新的 Java-ADT Eclipse 程序,当我将上述语句输入 list 文件时,应用程序崩溃了。我的意思是当我插入一个设备来测试应用程序时(无论是我的 Galaxy II、Galaxy 4 还是 Galaxy Tab 3 10.1)应用程序安装正确(Eclipse 没有给出错误并声称一切成功),但是设备应用程序加载一个空的黑屏,然后很快崩溃并显示消息“不幸的是,(应用程序)已停止”。我错过了什么吗?

这里有一些注意事项:

  • 生成的应用程序是黑色的,没有标题或通知栏(在崩溃之前),当我将主题短语更改为相同的内容 MINUS,比如“全屏”时,它会正确显示带有通知栏的黑屏但没有标题栏(崩溃前)。对我来说,这表明我输入的短语按照今天的标准仍然是正确的,也许需要的更改/修改在别处。

  • 如果我启动一个新项目并运行它,“Hello World”应用程序会在我的所有设备上正确显示,但如果我更改默认主题 (android:theme="@style/AppTheme") list 文件到任何其他主题,应用程序崩溃(“不幸的是,应用程序已停止”)。

  • 我尝试通过不同的途径覆盖它:我在 res-values-styles 文件中输入了一系列短语(手动应用“NoTitle”和“全屏”属性),但这仅适用于我的 Galaxy 4 和 Tab 3 10.1(我的 Galaxy II 仍显示标题)。此外,该应用程序是白色的,而不是黑色的。

在这一点上的任何建议都会有很大的帮助!谢谢

最佳答案

不幸的是,这最近被打破了(至少在 Intellij 中)。选择 NoTitle 主题之一会使应用程序在运行时崩溃,因为该主题需要是 AppCompat 的后代(至少对于较低的最低 SDK 版本),但目前似乎没有隐藏标题栏的主题。

这是一个有效的修复程序,可以在运行的应用程序和布局预览中隐藏标题栏:

1) 在 AndroidManifest.xml 中将您的主题设置回“AppTheme”:

    android:theme="@style/AppTheme"

2) 通过添加(到 name="AppTheme")更新 res/values/styles.xml 中的主题样式:

    <item name="android:windowNoTitle">true</item>

如果您还想隐藏操作栏,我相信您也可以使用“android:windowFullscreen”来做到这一点。

以上两个步骤在您运行应用程序(模拟器或设备)时有效,但布局仍会显示标题栏。您可以通过转到布局(例如 activity_main.xml)然后单击预览上方的主题 (AppTheme) 并将其更改为类似 Light.NoTitleBar 的内容来隐藏它以处理您的布局。不幸的是,预览忽略了 styles.xml 中的主题更改,但希望这个问题会得到修复。


2015 年 6 月 8 日更新:此说明不再适用于 Android Studio 1.2.1.1,但有一个简单的修复(本来应该有效):

您现在可以在 AndroidManifest.xml 中设置 android:theme:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

我不知道还需要哪些其他更改,因为我没有在我的项目中回滚它们。

奇怪的是,我在我的系统上找不到 Theme.AppCompat.Black...,也找不到 Theme.Black.... 按照 OP 的要求。

关于android - 在 Android Manifest 中更改主题会导致应用程序崩溃 - 简单的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23772631/

有关android - 在 Android Manifest 中更改主题会导致应用程序崩溃 - 简单的解决方案?的更多相关文章

  1. ruby-on-rails - Ruby on Rails 迁移,将表更改为 MyISAM - 2

    如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设

  2. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  3. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  4. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  7. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  8. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  9. ruby - Capistrano 3 在任务中更改 ssh_options - 2

    我尝试使用不同的ssh_options在同一阶段运行capistranov.3任务。我的production.rb说:set:stage,:productionset:user,'deploy'set:ssh_options,{user:'deploy'}通过此配置,capistrano与用户deploy连接,这对于其余的任务是正确的。但是我需要将它连接到服务器中配置良好的an_other_user以完成一项特定任务。然后我的食谱说:...taskswithoriginaluser...task:my_task_with_an_other_userdoset:user,'an_othe

  10. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

随机推荐