我在报告事件时遇到了 OrientationEventListener 问题,即使在我禁用它之后也是如此。
我正在使用选项卡布局中的三个 fragment ,只有一个 fragment 需要更改方向。当我离开这个 fragment 时,我希望方向事件停止产生影响。
我的代码的生命周期部分如下:
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (orientationEventListener == null)
{
Log.w(LogTags.MOBILE_MONITOR, "Creating orientationListener in " + this.toString());
orientationEventListener = new OrientationEventListener(getActivity(), SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int angle) {
...Do work using getActivity()...
}
};
}
}
@Override
public void onResume() {
super.onResume();
orientationEventListener.enable();
}
@Override
public void onPause() {
super.onPause();
orientationEventListener.disable();
}
当我在移动设备时切换 fragment 时出现问题。当我尝试在 OrientationEventListener 的 onOrientationChanged(int angle) 中调用 getActivity() 时,调用返回 null,这意味着我得到一个 null如果我尝试使用它,指针异常。
虽然我可以在此处添加空检查,但我只想知道为什么在我已明确禁用监听器时会收到定向事件。如果我在故障点检查 OrientationEventListener,它甚至会报告 mEnabled=false。有什么办法可以防止事件传播到我的听众?
最佳答案
如果您将方向设置为 ActivityInfo.SCREEN_ORIENTATION_SENSOR, Activity 将由物理方向传感器自动旋转。 https://developer.android.com/reference/android/R.attr.html#screenOrientation
通过重置 Activity 的方向模式来解决此问题。例如,重置为默认纵向布局:
mOrientationEventListener.disable();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
关于android - 禁用 OrientationEventListener 时调用 onOrientationChanged(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17179835/
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
是否可以在PyYAML或Ruby的Psych引擎中禁用创建anchor和引用(并有效地显式列出冗余数据)?也许我在网上搜索时遗漏了一些东西,但在Psych中似乎没有太多可用的选项,而且我也无法确定PyYAML是否允许这样做.基本原理是我必须序列化一些数据并将其以可读的形式传递给一个不是真正的技术同事进行手动验证。有些数据是多余的,但我需要以最明确的方式列出它们以提高可读性(anchor和引用是提高效率的好概念,但不是人类可读性)。Ruby和Python是我选择的工具,但如果有其他一些相当简单的方法来“展开”YAML文档,它可能就可以了。 最佳答案
Devise是一个Ruby库,它为我提供了这个User类:classUser当写入:confirmable时,注册时会发送一封确认邮件。上周我不得不批量创建300个用户,所以我在恢复之前注释掉了:confirmable几分钟。现在我正在为用户批量创建创建一个UI,因此我需要即时添加/删除:confirmable。(我也可以直接修改Devise的源码,但我宁愿不去调和它)问题:如何即时添加/删除:confirmable? 最佳答案 WayneConrad的解决方案:user=User.newuser.skip_confirmation
我想禁用HTTP参数的自动XML解析。但我发现命令仅适用于Rails2.x,它们都不适用于3.0:config.action_controller.param_parsers.deleteMime::XML(application.rb)ActionController::Base.param_parsers.deleteMime::XMLRails3.0中的等价物是什么? 最佳答案 根据CVE-2013-0156的最新安全公告你可以将它用于Rails3.0。3.1和3.2ActionDispatch::ParamsParser::
我有一个客户端gem,我将通过rubygems分发业务客户端。Gem客户端有cca。十几个gem依赖项,当它被安装时,由于为每个gem生成rdoc和ri,安装它需要很长时间。客户是商业用户,他们对rdoc/ri没有用处,我正在寻找一种通过.gemspec或Gemfile禁用它的方法。我熟悉利用系统文件.gemrc禁用rdoc/ri的解决方案。但这是NotAcceptable解决方案,因为我希望我的安装像键入一样简单:gem安装foo 最佳答案 你可以使用post-installmessage解释他们可以通过运行@shime建
#!/usr/bin/envrubyrequire'optparse'options={}OptionParser.newdo|opts|opts.on("--languageLANGUAGE",["Ruby","JavaScript"])do|language|options[:language]=languageendend.parse!puts"Language:#{options[:language]}"如果我用./bin/example--languageRu运行它,它将输出:Language:Ruby我想禁用此自动完成/最接近的匹配行为,并在未提供确切名称时引发Option
是否可以在使用YAML.load_file时强制Ruby调用初始化方法?我想调用该方法以便为我不序列化的实例变量提供值。我知道我可以将代码分解成一个单独的方法并在调用YAML.load_file之后调用该方法,但我想知道是否有更优雅的方法来处理这个问题。 最佳答案 我认为你做不到。由于您要添加的代码确实特定于要反序列化的类,因此您应该考虑在类中添加该功能。例如,让Foo成为您要反序列化的类,您可以添加一个类方法,例如:classFoodefself.from_yaml(yaml)foo=YAML::load(yaml)#editth
出于某种原因,我必须为Firefox禁用javascript(手动,我们按照提到的步骤执行http://support.mozilla.org/en-US/kb/javascript-settings-for-interactive-web-pages#w_enabling-and-disabling-javascript)。使用Ruby的SeleniumWebDriver如何实现这一点? 最佳答案 是的,这是可能的。而是另一种方式。您首先需要查看链接Selenium::WebDriver::Firefox::Profile#[]=
在我的RubyonRails应用程序中,我使用的是Geocoder。它工作正常,但我的测试速度慢了十倍!我找到了一些解决方案,但我认为它们不是很清楚?有什么方法可以在测试环境中禁用Geocoder? 最佳答案 根据gemdocumentationonGithub,您可以在测试中使用测试查找,以避免执行实际请求:Geocoder.configure(:lookup=>:test)Geocoder::Lookup::Test.add_stub("NewYork,NY",[{'latitude'=>40.7143528,'longitud
所以,我想为我的sinatra应用程序完全自定义日志记录,但我似乎无法禁用Rack::CommonLogger。根据sinatradocs我需要做的就是添加以下行(也尝试将其设置为false):set:logging,nil我的配置。但是,这不起作用,我仍然在我的终端中收到类似Apache的日志消息。所以到目前为止我找到的唯一解决方案就是猴子修补这该死的东西。moduleRackclassCommonLoggerdefcall(env)#donothing@app.call(env)endendend如果可以在不恢复此类问题的情况下禁用它,有人有任何想法吗?