- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个带有 TabManager 的 Android 应用程序。由于 Android API 的变化,我需要为 Activity 升级我的应用程序以包含 fragment 。为了提供向后兼容性,我使用 ActionBarSherlock。
我的应用运行良好。但是,查看 Google Play Developer Console,在 getSherlockActivity() 的线上总是很少有关于“java.lang.NullPointerException”的崩溃报告,我认为只有不到 0.1% 的用户受到影响。
例如,
// Example 1
File file = new File(getSherlockActivity().getCacheDir(), "filename");
// Example 2
getSherlockActivity().setSupportProgressBarIndeterminateVisibility(false);
我的问题:1. 我是否应该将所有的 getSherlockActivity() 更改为 getActivity()?或者在某些规则下,必须使用其中之一?2. 它们有什么区别?
非常感谢。
最佳答案
唯一的区别是,使用 getSherlockActivity ()
时,您会得到 getActivity()
的结果,但会转换为 SherlockActivity。这允许访问 ABS 特定的 api。
如果您只需要足够通用的东西放在 Activity
类中,只需使用 getActivity()
。它会突出显示这一点,否则会突出显示您使用 getSherlockActivity ()
特定于 ABS 的东西。
NPE 可以来自:
getActivity()
(或兄弟...)getActivity()
(或兄弟...)因此解决方案是在使用其 Activity 之前检查您的 fragment 是否已附加:
if( isAttached() ) {
getActivity()....
}
关于android - 使用 getSherlockActivity() 或 getActivity() 或其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16957847/
我正在尝试使用此代码通过 Whatsapp 发送消息。我遇到的问题是“方法 getSherlockActivity() 对于 Send 类型未定义”。我应该重命名我的发送还是需要导入某些内容? Ecl
我正在使用 SherlockFragment,直到今天我一直使用 getActivity() 方法来获取托管该 fragment 的 Activity 实例。现在我意识到 SherlockFragme
我试图在 4.2 设备上启动操作模式,但结果为空。我不确定这是一个 sherlock 问题,因为 native 调用失败了。 我们将不胜感激。 @Override public boolean onI
我有一个带有 TabManager 的 Android 应用程序。由于 Android API 的变化,我需要为 Activity 升级我的应用程序以包含 fragment 。为了提供向后兼容性,我使
我一直在尝试使用 actionbarsherlock 来扩充菜单,但没有成功。请提出错误的建议。这是我的代码: @Override public boolean onCreateOp
我是一名优秀的程序员,十分优秀!