gpt4 book ai didi

android - 使用 getSherlockActivity() 或 getActivity() 或其他?

转载 作者:太空狗 更新时间:2023-10-29 16:41:35 24 4
gpt4 key购买 nike

我有一个带有 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 可以来自:

  • 在执行 onAttach 之前使用 getActivity()(或兄弟...)
  • 在 onDetach 执行后使用 getActivity()(或兄弟...)

因此解决方案是在使用其 Activity 之前检查您的 fragment 是否已附加:

if( isAttached() ) {
getActivity()....
}

关于android - 使用 getSherlockActivity() 或 getActivity() 或其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16957847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com